diff options
| author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2021-11-29 16:56:45 -0500 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2021-12-31 13:13:24 -0500 |
| commit | b1fbafddbbfbe7894faa6fa78cb1bcf0eb5089a1 (patch) | |
| tree | 0b608b582d479450a1dab418bfec161447d6e459 /src | |
| parent | a09f775e5a71ba809f465b3af377943627552001 (diff) | |
| download | rust-b1fbafddbbfbe7894faa6fa78cb1bcf0eb5089a1.tar.gz rust-b1fbafddbbfbe7894faa6fa78cb1bcf0eb5089a1.zip | |
rustbuild: Add support for a per-target default-linker option.
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/compile.rs | 11 | ||||
| -rw-r--r-- | src/bootstrap/config.rs | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 6a734ab5177..c0ab093f952 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -662,6 +662,8 @@ pub fn rustc_cargo_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetS .env("CFG_VERSION", builder.rust_version()); let libdir_relative = builder.config.libdir_relative().unwrap_or_else(|| Path::new("lib")); + let target_config = builder.config.target_config.get(&target); + cargo.env("CFG_LIBDIR_RELATIVE", libdir_relative); if let Some(ref ver_date) = builder.rust_info.commit_date() { @@ -673,9 +675,15 @@ pub fn rustc_cargo_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetS if !builder.unstable_features() { cargo.env("CFG_DISABLE_UNSTABLE_FEATURES", "1"); } - if let Some(ref s) = builder.config.rustc_default_linker { + + // Prefer the current target's own default_linker, else a globally + // specified one. + if let Some(s) = target_config.and_then(|c| c.default_linker.as_ref()) { + cargo.env("CFG_DEFAULT_LINKER", s); + } else if let Some(ref s) = builder.config.rustc_default_linker { cargo.env("CFG_DEFAULT_LINKER", s); } + if builder.config.rustc_parallel { cargo.rustflag("--cfg=parallel_compiler"); cargo.rustdocflag("--cfg=parallel_compiler"); @@ -700,7 +708,6 @@ pub fn rustc_cargo_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetS } let llvm_config = builder.ensure(native::Llvm { target }); cargo.env("LLVM_CONFIG", &llvm_config); - let target_config = builder.config.target_config.get(&target); if let Some(s) = target_config.and_then(|c| c.llvm_config.as_ref()) { cargo.env("CFG_LLVM_ROOT", s); } diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 68e20f90b7f..7a4593a75f2 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -294,6 +294,7 @@ pub struct Target { pub cxx: Option<PathBuf>, pub ar: Option<PathBuf>, pub ranlib: Option<PathBuf>, + pub default_linker: Option<PathBuf>, pub linker: Option<PathBuf>, pub ndk: Option<PathBuf>, pub sanitizers: Option<bool>, @@ -531,6 +532,7 @@ struct TomlTarget { cxx: Option<String>, ar: Option<String>, ranlib: Option<String>, + default_linker: Option<PathBuf>, linker: Option<String>, llvm_config: Option<String>, llvm_filecheck: Option<String>, |
