@@ -318,11 +318,8 @@ struct TomlTarget {
318
318
}
319
319
320
320
impl Config {
321
- pub fn parse ( args : & [ String ] ) -> Config {
322
- let flags = Flags :: parse ( & args) ;
323
- let file = flags. config . clone ( ) ;
321
+ pub fn default_opts ( ) -> Config {
324
322
let mut config = Config :: default ( ) ;
325
- config. exclude = flags. exclude ;
326
323
config. llvm_enabled = true ;
327
324
config. llvm_optimize = true ;
328
325
config. llvm_version_check = true ;
@@ -342,11 +339,26 @@ impl Config {
342
339
config. rust_codegen_backends = vec ! [ INTERNER . intern_str( "llvm" ) ] ;
343
340
config. rust_codegen_backends_dir = "codegen-backends" . to_owned ( ) ;
344
341
342
+ // set by bootstrap.py
343
+ config. src = env:: var_os ( "SRC" ) . map ( PathBuf :: from) . expect ( "'SRC' to be set" ) ;
344
+ config. build = INTERNER . intern_str ( & env:: var ( "BUILD" ) . expect ( "'BUILD' to be set" ) ) ;
345
+ config. out = env:: var_os ( "BUILD_DIR" ) . map ( PathBuf :: from) . expect ( "'BUILD_DIR' set" ) ;
346
+
347
+ let stage0_root = config. out . join ( & config. build ) . join ( "stage0/bin" ) ;
348
+ config. initial_rustc = stage0_root. join ( exe ( "rustc" , & config. build ) ) ;
349
+ config. initial_cargo = stage0_root. join ( exe ( "cargo" , & config. build ) ) ;
350
+
351
+ config
352
+ }
353
+
354
+ pub fn parse ( args : & [ String ] ) -> Config {
355
+ let flags = Flags :: parse ( & args) ;
356
+ let file = flags. config . clone ( ) ;
357
+ let mut config = Config :: default_opts ( ) ;
358
+ config. exclude = flags. exclude ;
345
359
config. rustc_error_format = flags. rustc_error_format ;
346
360
config. on_fail = flags. on_fail ;
347
361
config. stage = flags. stage ;
348
- // set by bootstrap.py
349
- config. src = env:: var_os ( "SRC" ) . map ( PathBuf :: from) . expect ( "'SRC' to be set" ) ;
350
362
config. jobs = flags. jobs ;
351
363
config. cmd = flags. cmd ;
352
364
config. incremental = flags. incremental ;
@@ -371,7 +383,6 @@ impl Config {
371
383
372
384
let build = toml. build . clone ( ) . unwrap_or ( Build :: default ( ) ) ;
373
385
// set by bootstrap.py
374
- config. build = INTERNER . intern_str ( & env:: var ( "BUILD" ) . unwrap ( ) ) ;
375
386
config. hosts . push ( config. build . clone ( ) ) ;
376
387
for host in build. host . iter ( ) {
377
388
let host = INTERNER . intern_str ( host) ;
@@ -539,22 +550,12 @@ impl Config {
539
550
set ( & mut config. rust_dist_src , t. src_tarball ) ;
540
551
}
541
552
542
- let out = env:: var_os ( "BUILD_DIR" ) . map ( PathBuf :: from) . expect ( "'BUILD_DIR' set" ) ;
543
- config. out = out. clone ( ) ;
544
-
545
- let stage0_root = out. join ( & config. build ) . join ( "stage0/bin" ) ;
546
- config. initial_rustc = match build. rustc {
547
- Some ( s) => PathBuf :: from ( s) ,
548
- None => stage0_root. join ( exe ( "rustc" , & config. build ) ) ,
549
- } ;
550
- config. initial_cargo = match build. cargo {
551
- Some ( s) => PathBuf :: from ( s) ,
552
- None => stage0_root. join ( exe ( "cargo" , & config. build ) ) ,
553
- } ;
554
-
555
553
// Now that we've reached the end of our configuration, infer the
556
554
// default values for all options that we haven't otherwise stored yet.
557
555
556
+ set ( & mut config. initial_rustc , build. rustc . map ( PathBuf :: from) ) ;
557
+ set ( & mut config. initial_rustc , build. cargo . map ( PathBuf :: from) ) ;
558
+
558
559
let default = false ;
559
560
config. llvm_assertions = llvm_assertions. unwrap_or ( default) ;
560
561
0 commit comments