From b27fca71d46b2da88611bb5cc8cfb6e90c0a4af0 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Mon, 7 Sep 2020 00:39:58 +0300 Subject: [PATCH] rustbuild: Deduplicate LLD checks slightly --- src/bootstrap/builder.rs | 7 +++---- src/bootstrap/lib.rs | 10 +++++++--- src/bootstrap/test.rs | 6 +++--- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index ca2e159d2d948..c7fc360c23312 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 642f1ea9c0095..8d60284cd4ff0 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 { if target.contains("pc-windows-msvc") { diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index 98a219e39792d..732028fb6ed47 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(" "));