]> git.lizzy.rs Git - rust.git/blobdiff - src/bootstrap/config.rs
rustdoc: remove no-op CSS `.impl { flex-basis: 100% }` etc
[rust.git] / src / bootstrap / config.rs
index a6333976f2ac2a6d04d062cf51b8d790a0aff61f..f29b5170ea5e26930bb480691475956c6fc0ca28 100644 (file)
@@ -73,6 +73,8 @@ pub struct Config {
     pub color: Color,
     pub patch_binaries_for_nix: bool,
     pub stage0_metadata: Stage0Metadata,
+    /// Whether to use the `c` feature of the `compiler_builtins` crate.
+    pub optimized_compiler_builtins: bool,
 
     pub on_fail: Option<String>,
     pub stage: u32,
@@ -597,6 +599,7 @@ struct Build {
         bench_stage: Option<u32> = "bench-stage",
         patch_binaries_for_nix: Option<bool> = "patch-binaries-for-nix",
         metrics: Option<bool> = "metrics",
+        optimized_compiler_builtins: Option<bool> = "optimized-compiler-builtins",
     }
 }
 
@@ -901,9 +904,7 @@ pub fn parse(args: &[String]) -> Config {
         config.config = toml_path;
 
         let build = toml.build.unwrap_or_default();
-        let has_custom_rustc = build.rustc.is_some();
 
-        set(&mut config.initial_rustc, build.rustc.map(PathBuf::from));
         set(&mut config.out, flags.build_dir.or_else(|| build.build_dir.map(PathBuf::from)));
         // NOTE: Bootstrap spawns various commands with different working directories.
         // To avoid writing to random places on the file system, `config.out` needs to be an absolute path.
@@ -912,10 +913,14 @@ pub fn parse(args: &[String]) -> Config {
             config.out = crate::util::absolute(&config.out);
         }
 
-        if !has_custom_rustc && !config.initial_rustc.starts_with(&config.out) {
-            config.initial_rustc = config.out.join(config.build.triple).join("stage0/bin/rustc");
-            config.initial_cargo = config.out.join(config.build.triple).join("stage0/bin/cargo");
-        }
+        config.initial_rustc = build
+            .rustc
+            .map(PathBuf::from)
+            .unwrap_or_else(|| config.out.join(config.build.triple).join("stage0/bin/rustc"));
+        config.initial_cargo = build
+            .cargo
+            .map(PathBuf::from)
+            .unwrap_or_else(|| config.out.join(config.build.triple).join("stage0/bin/cargo"));
 
         // NOTE: it's important this comes *after* we set `initial_rustc` just above.
         if config.dry_run {
@@ -964,6 +969,7 @@ pub fn parse(args: &[String]) -> Config {
         set(&mut config.print_step_timings, build.print_step_timings);
         set(&mut config.print_step_rusage, build.print_step_rusage);
         set(&mut config.patch_binaries_for_nix, build.patch_binaries_for_nix);
+        set(&mut config.optimized_compiler_builtins, build.optimized_compiler_builtins);
 
         config.verbose = cmp::max(config.verbose, flags.verbose);