about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2020-09-07 00:39:58 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2020-09-07 00:40:07 +0300
commitb27fca71d46b2da88611bb5cc8cfb6e90c0a4af0 (patch)
treebbcb579f0732293c267d935ae3d2452988965907
parent5118a51b4d49a139ea21d280001105948de298f7 (diff)
downloadrust-b27fca71d46b2da88611bb5cc8cfb6e90c0a4af0.tar.gz
rust-b27fca71d46b2da88611bb5cc8cfb6e90c0a4af0.zip
rustbuild: Deduplicate LLD checks slightly
-rw-r--r--src/bootstrap/builder.rs7
-rw-r--r--src/bootstrap/lib.rs10
-rw-r--r--src/bootstrap/test.rs6
3 files changed, 13 insertions, 10 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index ca2e159d2d9..c7fc360c233 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -758,7 +758,7 @@ impl<'a> Builder<'a> {
         if let Some(linker) = self.linker(compiler.host) {
             cmd.env("RUSTDOC_LINKER", linker);
         }
-        if self.config.use_lld && !compiler.host.contains("msvc") {
+        if self.is_fuse_ld_lld(compiler.host) {
             cmd.env("RUSTDOC_FUSE_LD_LLD", "1");
         }
         cmd
@@ -1047,7 +1047,7 @@ impl<'a> Builder<'a> {
         if let Some(host_linker) = self.linker(compiler.host) {
             cargo.env("RUSTC_HOST_LINKER", host_linker);
         }
-        if self.config.use_lld && !compiler.host.contains("msvc") {
+        if self.is_fuse_ld_lld(compiler.host) {
             cargo.env("RUSTC_HOST_FUSE_LD_LLD", "1");
         }
 
@@ -1055,8 +1055,7 @@ impl<'a> Builder<'a> {
             let target = crate::envify(&target.triple);
             cargo.env(&format!("CARGO_TARGET_{}_LINKER", target), target_linker);
         }
-
-        if self.config.use_lld && !target.contains("msvc") {
+        if self.is_fuse_ld_lld(target) {
             rustflags.arg("-Clink-args=-fuse-ld=lld");
         }
 
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
index 642f1ea9c00..8d60284cd4f 100644
--- a/src/bootstrap/lib.rs
+++ b/src/bootstrap/lib.rs
@@ -863,15 +863,19 @@ impl Build {
             && !target.contains("msvc")
         {
             Some(self.cc(target))
-        } else if target.contains("msvc") && self.config.use_lld && self.build == target {
-            // `rust.use_lld` means using LLD directly only for MSVC, for other targets it only
-            // adds `-fuse-ld=lld` to already selected linker.
+        } else if self.config.use_lld && !self.is_fuse_ld_lld(target) && self.build == target {
             Some(&self.initial_lld)
         } else {
             None
         }
     }
 
+    // LLD is used through `-fuse-ld=lld` rather than directly.
+    // Only MSVC targets use LLD directly at the moment.
+    fn is_fuse_ld_lld(&self, target: TargetSelection) -> bool {
+        self.config.use_lld && !target.contains("msvc")
+    }
+
     /// Returns if this target should statically link the C runtime, if specified
     fn crt_static(&self, target: TargetSelection) -> Option<bool> {
         if target.contains("pc-windows-msvc") {
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index 98a219e3979..732028fb6ed 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -603,7 +603,7 @@ impl Step for RustdocTheme {
         if let Some(linker) = builder.linker(self.compiler.host) {
             cmd.env("RUSTDOC_LINKER", linker);
         }
-        if builder.config.use_lld && !self.compiler.host.contains("msvc") {
+        if builder.is_fuse_ld_lld(self.compiler.host) {
             cmd.env("RUSTDOC_FUSE_LD_LLD", "1");
         }
         try_run(builder, &mut cmd);
@@ -1070,14 +1070,14 @@ impl Step for Compiletest {
 
         let mut hostflags = flags.clone();
         hostflags.push(format!("-Lnative={}", builder.test_helpers_out(compiler.host).display()));
-        if builder.config.use_lld && !compiler.host.triple.contains("msvc") {
+        if builder.is_fuse_ld_lld(compiler.host) {
             hostflags.push("-Clink-args=-fuse-ld=lld".to_string());
         }
         cmd.arg("--host-rustcflags").arg(hostflags.join(" "));
 
         let mut targetflags = flags;
         targetflags.push(format!("-Lnative={}", builder.test_helpers_out(target).display()));
-        if builder.config.use_lld && !target.contains("msvc") {
+        if builder.is_fuse_ld_lld(target) {
             targetflags.push("-Clink-args=-fuse-ld=lld".to_string());
         }
         cmd.arg("--target-rustcflags").arg(targetflags.join(" "));