@@ -98,6 +98,12 @@ fn handle_kernel_symbols_cfg(symvers_path: &PathBuf) {
98
98
}
99
99
}
100
100
101
+ fn add_env_if_present ( cmd : & mut Command , var : & str ) {
102
+ if let Ok ( val) = env:: var ( var) {
103
+ cmd. env ( var, val) ;
104
+ }
105
+ }
106
+
101
107
fn main ( ) {
102
108
println ! ( "cargo:rerun-if-env-changed=KDIR" ) ;
103
109
let kdir = env:: var ( "KDIR" ) . unwrap_or ( format ! (
@@ -109,12 +115,15 @@ fn main() {
109
115
110
116
println ! ( "cargo:rerun-if-env-changed=CLANG" ) ;
111
117
println ! ( "cargo:rerun-if-changed=kernel-cflags-finder/Makefile" ) ;
112
- let output = Command :: new ( "make" )
113
- . arg ( "-C" )
118
+ let mut cmd = Command :: new ( "make" ) ;
119
+ cmd . arg ( "-C" )
114
120
. arg ( "kernel-cflags-finder" )
115
121
. arg ( "-s" )
116
- . output ( )
117
- . unwrap ( ) ;
122
+ . env_clear ( ) ;
123
+ add_env_if_present ( & mut cmd, "KDIR" ) ;
124
+ add_env_if_present ( & mut cmd, "CLANG" ) ;
125
+ add_env_if_present ( & mut cmd, "PATH" ) ;
126
+ let output = cmd. output ( ) . unwrap ( ) ;
118
127
if !output. status . success ( ) {
119
128
eprintln ! ( "kernel-cflags-finder did not succeed" ) ;
120
129
eprintln ! ( "stdout: {}" , std:: str :: from_utf8( & output. stdout) . unwrap( ) ) ;
@@ -161,7 +170,6 @@ fn main() {
161
170
handle_kernel_symbols_cfg ( & PathBuf :: from ( & kdir) . join ( "Module.symvers" ) ) ;
162
171
163
172
let mut builder = cc:: Build :: new ( ) ;
164
- println ! ( "cargo:rerun-if-env-changed=CLANG" ) ;
165
173
builder. compiler ( env:: var ( "CLANG" ) . unwrap_or ( "clang" . to_string ( ) ) ) ;
166
174
builder. target ( & target) ;
167
175
builder. warnings ( false ) ;
0 commit comments