diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 9946c93913f..9a07e8a8b10 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -276,6 +276,10 @@ pub fn rustc(build: &Build, target: &str, compiler: &Compiler) { if build.is_rust_llvm(target) { cargo.env("LLVM_RUSTLLVM", "1"); } + if let Some(ref cfg_file) = build.flags.config { + let cfg_path = t!(PathBuf::from(cfg_file).canonicalize()); + cargo.env("CFG_LLVM_TOML", cfg_path.into_os_string()); + } cargo.env("LLVM_CONFIG", build.llvm_config(target)); let target_config = build.config.target_config.get(target); if let Some(s) = target_config.and_then(|c| c.llvm_config.as_ref()) { diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs index ba568857959..bdfc0a2fe85 100644 --- a/src/librustc_llvm/build.rs +++ b/src/librustc_llvm/build.rs @@ -61,6 +61,11 @@ fn main() { println!("cargo:rerun-if-changed={}", llvm_config.display()); + if let Some(cfg_toml) = env::var_os("CFG_LLVM_TOML") { + let cfg_path = PathBuf::from(cfg_toml); + println!("cargo:rerun-if-changed={}", cfg_path.display()); + } + // Test whether we're cross-compiling LLVM. This is a pretty rare case // currently where we're producing an LLVM for a different platform than // what this build script is currently running on.