@@ -98,6 +98,12 @@ fn handle_kernel_symbols_cfg(symvers_path: &PathBuf) {
9898 }
9999}
100100
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+
101107fn main ( ) {
102108 println ! ( "cargo:rerun-if-env-changed=KDIR" ) ;
103109 let kdir = env:: var ( "KDIR" ) . unwrap_or ( format ! (
@@ -109,12 +115,15 @@ fn main() {
109115
110116 println ! ( "cargo:rerun-if-env-changed=CLANG" ) ;
111117 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" )
114120 . arg ( "kernel-cflags-finder" )
115121 . 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 ( ) ;
118127 if !output. status . success ( ) {
119128 eprintln ! ( "kernel-cflags-finder did not succeed" ) ;
120129 eprintln ! ( "stdout: {}" , std:: str :: from_utf8( & output. stdout) . unwrap( ) ) ;
@@ -161,7 +170,6 @@ fn main() {
161170 handle_kernel_symbols_cfg ( & PathBuf :: from ( & kdir) . join ( "Module.symvers" ) ) ;
162171
163172 let mut builder = cc:: Build :: new ( ) ;
164- println ! ( "cargo:rerun-if-env-changed=CLANG" ) ;
165173 builder. compiler ( env:: var ( "CLANG" ) . unwrap_or ( "clang" . to_string ( ) ) ) ;
166174 builder. target ( & target) ;
167175 builder. warnings ( false ) ;
0 commit comments