rustbuild: expose LLVM_PARALLEL_LINK_JOBS
This allows limiting the number of linker jobs to avoid swapping when linking LLVM with debug info.
This commit is contained in:
parent
3087a1f39e
commit
58ff4f67e3
3 changed files with 17 additions and 0 deletions
|
@ -59,6 +59,7 @@ pub struct Config {
|
||||||
pub llvm_static_stdcpp: bool,
|
pub llvm_static_stdcpp: bool,
|
||||||
pub llvm_link_shared: bool,
|
pub llvm_link_shared: bool,
|
||||||
pub llvm_targets: Option<String>,
|
pub llvm_targets: Option<String>,
|
||||||
|
pub llvm_link_jobs: Option<u32>,
|
||||||
|
|
||||||
// rust codegen options
|
// rust codegen options
|
||||||
pub rust_optimize: bool,
|
pub rust_optimize: bool,
|
||||||
|
@ -179,6 +180,7 @@ struct Llvm {
|
||||||
version_check: Option<bool>,
|
version_check: Option<bool>,
|
||||||
static_libstdcpp: Option<bool>,
|
static_libstdcpp: Option<bool>,
|
||||||
targets: Option<String>,
|
targets: Option<String>,
|
||||||
|
link_jobs: Option<u32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(RustcDecodable, Default, Clone)]
|
#[derive(RustcDecodable, Default, Clone)]
|
||||||
|
@ -333,6 +335,7 @@ impl Config {
|
||||||
set(&mut config.llvm_version_check, llvm.version_check);
|
set(&mut config.llvm_version_check, llvm.version_check);
|
||||||
set(&mut config.llvm_static_stdcpp, llvm.static_libstdcpp);
|
set(&mut config.llvm_static_stdcpp, llvm.static_libstdcpp);
|
||||||
config.llvm_targets = llvm.targets.clone();
|
config.llvm_targets = llvm.targets.clone();
|
||||||
|
config.llvm_link_jobs = llvm.link_jobs;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(ref rust) = toml.rust {
|
if let Some(ref rust) = toml.rust {
|
||||||
|
|
|
@ -53,6 +53,14 @@
|
||||||
# Rust team and file an issue if you need assistance in porting!
|
# Rust team and file an issue if you need assistance in porting!
|
||||||
#targets = "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX"
|
#targets = "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX"
|
||||||
|
|
||||||
|
# Cap the number of parallel linker invocations when compiling LLVM.
|
||||||
|
# This can be useful when building LLVM with debug info, which significantly
|
||||||
|
# increases the size of binaries and consequently the memory required by
|
||||||
|
# each linker process.
|
||||||
|
# If absent or 0, linker invocations are treated like any other job and
|
||||||
|
# controlled by rustbuild's -j parameter.
|
||||||
|
#link-jobs = 0
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# General build configuration options
|
# General build configuration options
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
|
@ -115,6 +115,12 @@ pub fn llvm(build: &Build, target: &str) {
|
||||||
cfg.define("LLVM_BUILD_32_BITS", "ON");
|
cfg.define("LLVM_BUILD_32_BITS", "ON");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(num_linkers) = build.config.llvm_link_jobs {
|
||||||
|
if num_linkers > 0 {
|
||||||
|
cfg.define("LLVM_PARALLEL_LINK_JOBS", num_linkers.to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// http://llvm.org/docs/HowToCrossCompileLLVM.html
|
// http://llvm.org/docs/HowToCrossCompileLLVM.html
|
||||||
if target != build.config.build {
|
if target != build.config.build {
|
||||||
// FIXME: if the llvm root for the build triple is overridden then we
|
// FIXME: if the llvm root for the build triple is overridden then we
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue