@@ -3,34 +3,28 @@ use std::env;
33use std:: os:: unix:: process:: CommandExt ;
44use std:: process:: Command ;
55
6+ include ! ( "../build_system/shared_utils.rs" ) ;
7+
68fn main ( ) {
79 let current_exe = env:: current_exe ( ) . unwrap ( ) ;
810 let mut sysroot = current_exe. parent ( ) . unwrap ( ) ;
911 if sysroot. file_name ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) == "bin" {
1012 sysroot = sysroot. parent ( ) . unwrap ( ) ;
1113 }
1214
13- let mut rustflags = String :: new ( ) ;
14- rustflags. push_str ( " -Cpanic=abort -Zpanic-abort-tests -Zcodegen-backend=" ) ;
15+ let mut rustflags = vec ! [ "-Cpanic=abort" . to_owned( ) , "-Zpanic-abort-tests" . to_owned( ) ] ;
1516 if let Some ( name) = option_env ! ( "BUILTIN_BACKEND" ) {
16- rustflags. push_str ( name) ;
17+ rustflags. push ( format ! ( "-Zcodegen-backend={ name}" ) ) ;
1718 } else {
18- rustflags. push_str (
19- sysroot
20- . join ( if cfg ! ( windows) { "bin" } else { "lib" } )
21- . join (
22- env:: consts:: DLL_PREFIX . to_string ( )
23- + "rustc_codegen_cranelift"
24- + env:: consts:: DLL_SUFFIX ,
25- )
26- . to_str ( )
27- . unwrap ( ) ,
19+ let dylib = sysroot. join ( if cfg ! ( windows) { "bin" } else { "lib" } ) . join (
20+ env:: consts:: DLL_PREFIX . to_string ( )
21+ + "rustc_codegen_cranelift"
22+ + env:: consts:: DLL_SUFFIX ,
2823 ) ;
24+ rustflags. push ( format ! ( "-Zcodegen-backend={}" , dylib. to_str( ) . unwrap( ) ) ) ;
2925 }
30- rustflags. push_str ( " --sysroot " ) ;
31- rustflags. push_str ( sysroot. to_str ( ) . unwrap ( ) ) ;
32- env:: set_var ( "RUSTFLAGS" , env:: var ( "RUSTFLAGS" ) . unwrap_or ( String :: new ( ) ) + & rustflags) ;
33- env:: set_var ( "RUSTDOCFLAGS" , env:: var ( "RUSTDOCFLAGS" ) . unwrap_or ( String :: new ( ) ) + & rustflags) ;
26+ rustflags. push ( "--sysroot" . to_owned ( ) ) ;
27+ rustflags. push ( sysroot. to_str ( ) . unwrap ( ) . to_owned ( ) ) ;
3428
3529 let cargo = if let Some ( cargo) = option_env ! ( "CARGO" ) {
3630 cargo
@@ -49,10 +43,7 @@ fn main() {
4943
5044 let args: Vec < _ > = match args. get ( 0 ) . map ( |arg| & * * arg) {
5145 Some ( "jit" ) => {
52- env:: set_var (
53- "RUSTFLAGS" ,
54- env:: var ( "RUSTFLAGS" ) . unwrap_or ( String :: new ( ) ) + " -Cprefer-dynamic" ,
55- ) ;
46+ rustflags. push ( "-Cprefer-dynamic" . to_owned ( ) ) ;
5647 args. remove ( 0 ) ;
5748 IntoIterator :: into_iter ( [ "rustc" . to_string ( ) ] )
5849 . chain ( args)
@@ -64,10 +55,7 @@ fn main() {
6455 . collect ( )
6556 }
6657 Some ( "lazy-jit" ) => {
67- env:: set_var (
68- "RUSTFLAGS" ,
69- env:: var ( "RUSTFLAGS" ) . unwrap_or ( String :: new ( ) ) + " -Cprefer-dynamic" ,
70- ) ;
58+ rustflags. push ( "-Cprefer-dynamic" . to_owned ( ) ) ;
7159 args. remove ( 0 ) ;
7260 IntoIterator :: into_iter ( [ "rustc" . to_string ( ) ] )
7361 . chain ( args)
@@ -81,11 +69,28 @@ fn main() {
8169 _ => args,
8270 } ;
8371
72+ let mut cmd = Command :: new ( cargo) ;
73+ cmd. args ( args) ;
74+ rustflags_to_cmd_env (
75+ & mut cmd,
76+ "RUSTFLAGS" ,
77+ & rustflags_from_env ( "RUSTFLAGS" )
78+ . into_iter ( )
79+ . chain ( rustflags. iter ( ) . map ( |flag| flag. clone ( ) ) )
80+ . collect :: < Vec < _ > > ( ) ,
81+ ) ;
82+ rustflags_to_cmd_env (
83+ & mut cmd,
84+ "RUSTDOCFLAGS" ,
85+ & rustflags_from_env ( "RUSTDOCFLAGS" )
86+ . into_iter ( )
87+ . chain ( rustflags. iter ( ) . map ( |flag| flag. clone ( ) ) )
88+ . collect :: < Vec < _ > > ( ) ,
89+ ) ;
90+
8491 #[ cfg( unix) ]
85- panic ! ( "Failed to spawn cargo: {}" , Command :: new ( cargo ) . args ( args ) . exec( ) ) ;
92+ panic ! ( "Failed to spawn cargo: {}" , cmd . exec( ) ) ;
8693
8794 #[ cfg( not( unix) ) ]
88- std:: process:: exit (
89- Command :: new ( cargo) . args ( args) . spawn ( ) . unwrap ( ) . wait ( ) . unwrap ( ) . code ( ) . unwrap_or ( 1 ) ,
90- ) ;
95+ std:: process:: exit ( cmd. spawn ( ) . unwrap ( ) . wait ( ) . unwrap ( ) . code ( ) . unwrap_or ( 1 ) ) ;
9196}
0 commit comments