From 3a2a4429a288031e7810e84b35ff13b8dd4608a4 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Thu, 19 Mar 2020 10:28:47 -0700 Subject: [PATCH] Avoid llvm-config in more situations, like bootstrap test runs --- src/bootstrap/builder.rs | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 31125ec4a26a2..dd519506d42a0 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -698,6 +698,20 @@ impl<'a> Builder<'a> { cmd } + /// Return the path to `llvm-config` for the target, if it exists. + /// + /// Note that this returns `None` if LLVM is disabled, or if we're in a + /// check build or dry-run, where there's no need to build all of LLVM. + fn llvm_config(&self, target: Interned) -> Option { + if self.config.llvm_enabled() && self.kind != Kind::Check && !self.config.dry_run { + let llvm_config = self.ensure(native::Llvm { target }); + if llvm_config.is_file() { + return Some(llvm_config); + } + } + None + } + /// Prepares an invocation of `cargo` to be run. /// /// This will create a `Command` that represents a pending execution of @@ -1038,14 +1052,11 @@ impl<'a> Builder<'a> { // requirement, but the `-L` library path is not propagated across // separate Cargo projects. We can add LLVM's library path to the // platform-specific environment variable as a workaround. - // - // Note that this is disabled if LLVM itself is disabled or we're in a - // check build, where if we're in a check build there's no need to build - // all of LLVM and such. - if self.config.llvm_enabled() && self.kind != Kind::Check && mode == Mode::ToolRustc { - let llvm_config = self.ensure(native::Llvm { target }); - let llvm_libdir = output(Command::new(&llvm_config).arg("--libdir")); - add_link_lib_path(vec![llvm_libdir.trim().into()], &mut cargo); + if mode == Mode::ToolRustc { + if let Some(llvm_config) = self.llvm_config(target) { + let llvm_libdir = output(Command::new(&llvm_config).arg("--libdir")); + add_link_lib_path(vec![llvm_libdir.trim().into()], &mut cargo); + } } if self.config.incremental {