Generalize setting rust-lld as the default linker on Linux

This commit is contained in:
Jakub Beránek
2025-09-29 18:25:00 +02:00
parent 828c2a9afc
commit b6c9a6a442
3 changed files with 12 additions and 10 deletions

View File

@@ -1,5 +1,14 @@
use crate::spec::{TargetOptions, base};
use crate::spec::{Cc, LinkerFlavor, Lld, TargetOptions, base};
pub(crate) fn opts() -> TargetOptions {
TargetOptions { env: "gnu".into(), ..base::linux::opts() }
let mut base = TargetOptions { env: "gnu".into(), ..base::linux::opts() };
// When we're asked to use the `rust-lld` linker by default, set the appropriate lld-using
// linker flavor, and self-contained linker component.
if option_env!("CFG_DEFAULT_LINKER_SELF_CONTAINED_LLD_CC").is_some() {
base.linker_flavor = LinkerFlavor::Gnu(Cc::Yes, Lld::Yes);
base.link_self_contained = crate::spec::LinkSelfContainedDefault::with_linker();
}
base
}

View File

@@ -20,13 +20,6 @@ pub(crate) fn target() -> Target {
| SanitizerSet::THREAD;
base.supports_xray = true;
// When we're asked to use the `rust-lld` linker by default, set the appropriate lld-using
// linker flavor, and self-contained linker component.
if option_env!("CFG_USE_SELF_CONTAINED_LINKER").is_some() {
base.linker_flavor = LinkerFlavor::Gnu(Cc::Yes, Lld::Yes);
base.link_self_contained = crate::spec::LinkSelfContainedDefault::with_linker();
}
Target {
llvm_target: "x86_64-unknown-linux-gnu".into(),
metadata: TargetMetadata {

View File

@@ -1357,7 +1357,7 @@ pub fn rustc_cargo_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetS
// Enable rustc's env var for `rust-lld` when requested.
if builder.config.lld_enabled {
cargo.env("CFG_USE_SELF_CONTAINED_LINKER", "1");
cargo.env("CFG_DEFAULT_LINKER_SELF_CONTAINED_LLD_CC", "1");
}
if builder.config.rust_verify_llvm_ir {