diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-01-11 04:02:25 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-11 04:02:25 +0100 |
| commit | ef3e360c4bb38de90ef7f39531e83a8978c05863 (patch) | |
| tree | d05c349311fb8867955126a2ee12ae5aad6d246f | |
| parent | 8c0c5c7e65479eaac21b26980efeff7a9b893e60 (diff) | |
| parent | 7e50b599bfeb75f7be1d5a1fa855e37ec6d0e65d (diff) | |
| download | rust-ef3e360c4bb38de90ef7f39531e83a8978c05863.tar.gz rust-ef3e360c4bb38de90ef7f39531e83a8978c05863.zip | |
Rollup merge of #68074 - matthew-healy:skip-llvm-rebuild-option, r=Centril
Add `llvm-skip-rebuild` flag to `x.py` This PR follows on from #67437 to complete the feature request from #65612. Specifically it adds a new command-line flag, `--llvm-skip-rebuild`, which overrides both any value set in `config.toml` and the default value (`false`). I'm not 100% confident that I've implemented the override in the "best" way, but I've checked it locally and it seems to work at least. This option isn't currently mentioned in the Guide to Rustc Development. I'd be happy to write something on it if folk think that's worthwhile.
| -rw-r--r-- | src/bootstrap/config.rs | 8 | ||||
| -rw-r--r-- | src/bootstrap/flags.rs | 13 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 944df66431f..110c8b844d5 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -493,9 +493,13 @@ impl Config { config.mandir = install.mandir.clone().map(PathBuf::from); } + // We want the llvm-skip-rebuild flag to take precedence over the + // skip-rebuild config.toml option so we store it separately + // so that we can infer the right value + let mut llvm_skip_rebuild = flags.llvm_skip_rebuild; + // Store off these values as options because if they're not provided // we'll infer default values for them later - let mut llvm_skip_rebuild = None; let mut llvm_assertions = None; let mut debug = None; let mut debug_assertions = None; @@ -517,7 +521,7 @@ impl Config { } set(&mut config.ninja, llvm.ninja); llvm_assertions = llvm.assertions; - llvm_skip_rebuild = llvm.skip_rebuild; + llvm_skip_rebuild = llvm_skip_rebuild.or(llvm.skip_rebuild); set(&mut config.llvm_optimize, llvm.optimize); set(&mut config.llvm_thin_lto, llvm.thin_lto); set(&mut config.llvm_release_debuginfo, llvm.release_debuginfo); diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index ffc24367db6..1fbdd50a511 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -38,6 +38,8 @@ pub struct Flags { // // true => deny, false => warn pub deny_warnings: Option<bool>, + + pub llvm_skip_rebuild: Option<bool>, } pub enum Subcommand { @@ -150,6 +152,14 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`", "VALUE", ); opts.optopt("", "error-format", "rustc error format", "FORMAT"); + opts.optopt( + "", + "llvm-skip-rebuild", + "whether rebuilding llvm should be skipped \ + a VALUE of TRUE indicates that llvm will not be rebuilt \ + VALUE overrides the skip-rebuild option in config.toml.", + "VALUE", + ); // fn usage() let usage = @@ -487,6 +497,9 @@ Arguments: .map(|p| p.into()) .collect::<Vec<_>>(), deny_warnings: parse_deny_warnings(&matches), + llvm_skip_rebuild: matches.opt_str("llvm-skip-rebuild").map(|s| s.to_lowercase()).map( + |s| s.parse::<bool>().expect("`llvm-skip-rebuild` should be either true or false"), + ), } } } |
