rustbuild: Add support for a per-target default-linker option.
This commit is contained in:
parent
a09f775e5a
commit
b1fbafddbb
3 changed files with 17 additions and 5 deletions
|
@ -488,9 +488,12 @@ changelog-seen = 2
|
||||||
# FIXME(#75760): Some UI tests fail when this option is enabled.
|
# FIXME(#75760): Some UI tests fail when this option is enabled.
|
||||||
#parallel-compiler = false
|
#parallel-compiler = false
|
||||||
|
|
||||||
# The default linker that will be hard-coded into the generated compiler for
|
# The default linker that will be hard-coded into the generated
|
||||||
# targets that don't specify linker explicitly in their target specifications.
|
# compiler for targets that don't specify a default linker explicitly
|
||||||
# Note that this is not the linker used to link said compiler.
|
# in their target specifications. Note that this is not the linker
|
||||||
|
# used to link said compiler. It can also be set per-target (via the
|
||||||
|
# `[target.<triple>]` block), which may be useful in a cross-compilation
|
||||||
|
# setting.
|
||||||
#
|
#
|
||||||
# See https://doc.rust-lang.org/rustc/codegen-options/index.html#linker for more information.
|
# See https://doc.rust-lang.org/rustc/codegen-options/index.html#linker for more information.
|
||||||
#default-linker = <none> (path)
|
#default-linker = <none> (path)
|
||||||
|
|
|
@ -662,6 +662,8 @@ pub fn rustc_cargo_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetS
|
||||||
.env("CFG_VERSION", builder.rust_version());
|
.env("CFG_VERSION", builder.rust_version());
|
||||||
|
|
||||||
let libdir_relative = builder.config.libdir_relative().unwrap_or_else(|| Path::new("lib"));
|
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);
|
cargo.env("CFG_LIBDIR_RELATIVE", libdir_relative);
|
||||||
|
|
||||||
if let Some(ref ver_date) = builder.rust_info.commit_date() {
|
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() {
|
if !builder.unstable_features() {
|
||||||
cargo.env("CFG_DISABLE_UNSTABLE_FEATURES", "1");
|
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);
|
cargo.env("CFG_DEFAULT_LINKER", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
if builder.config.rustc_parallel {
|
if builder.config.rustc_parallel {
|
||||||
cargo.rustflag("--cfg=parallel_compiler");
|
cargo.rustflag("--cfg=parallel_compiler");
|
||||||
cargo.rustdocflag("--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 });
|
let llvm_config = builder.ensure(native::Llvm { target });
|
||||||
cargo.env("LLVM_CONFIG", &llvm_config);
|
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()) {
|
if let Some(s) = target_config.and_then(|c| c.llvm_config.as_ref()) {
|
||||||
cargo.env("CFG_LLVM_ROOT", s);
|
cargo.env("CFG_LLVM_ROOT", s);
|
||||||
}
|
}
|
||||||
|
|
|
@ -294,6 +294,7 @@ pub struct Target {
|
||||||
pub cxx: Option<PathBuf>,
|
pub cxx: Option<PathBuf>,
|
||||||
pub ar: Option<PathBuf>,
|
pub ar: Option<PathBuf>,
|
||||||
pub ranlib: Option<PathBuf>,
|
pub ranlib: Option<PathBuf>,
|
||||||
|
pub default_linker: Option<PathBuf>,
|
||||||
pub linker: Option<PathBuf>,
|
pub linker: Option<PathBuf>,
|
||||||
pub ndk: Option<PathBuf>,
|
pub ndk: Option<PathBuf>,
|
||||||
pub sanitizers: Option<bool>,
|
pub sanitizers: Option<bool>,
|
||||||
|
@ -531,6 +532,7 @@ struct TomlTarget {
|
||||||
cxx: Option<String>,
|
cxx: Option<String>,
|
||||||
ar: Option<String>,
|
ar: Option<String>,
|
||||||
ranlib: Option<String>,
|
ranlib: Option<String>,
|
||||||
|
default_linker: Option<PathBuf>,
|
||||||
linker: Option<String>,
|
linker: Option<String>,
|
||||||
llvm_config: Option<String>,
|
llvm_config: Option<String>,
|
||||||
llvm_filecheck: Option<String>,
|
llvm_filecheck: Option<String>,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue