Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
rustbuild: Deduplicate LLD checks slightly
  • Loading branch information
petrochenkov committed Sep 6, 2020
1 parent 5118a51 commit b27fca7
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
7 changes: 3 additions & 4 deletions src/bootstrap/builder.rs
Expand Up @@ -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
Expand Down Expand Up @@ -1047,16 +1047,15 @@ 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");
}

if let Some(target_linker) = self.linker(target) {
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");
}

Expand Down
10 changes: 7 additions & 3 deletions src/bootstrap/lib.rs
Expand Up @@ -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") {
Expand Down
6 changes: 3 additions & 3 deletions src/bootstrap/test.rs
Expand Up @@ -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);
Expand Down Expand Up @@ -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(" "));
Expand Down

0 comments on commit b27fca7

Please sign in to comment.