Skip to content

Commit

Permalink
rustbuild: expose LLVM_PARALLEL_LINK_JOBS
Browse files Browse the repository at this point in the history
This allows limiting the number of linker jobs to avoid swapping when
linking LLVM with debug info.
  • Loading branch information
Robin Kruppe committed Mar 9, 2017
1 parent 3087a1f commit 58ff4f6
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/bootstrap/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ pub struct Config {
pub llvm_static_stdcpp: bool,
pub llvm_link_shared: bool,
pub llvm_targets: Option<String>,
pub llvm_link_jobs: Option<u32>,

// rust codegen options
pub rust_optimize: bool,
Expand Down Expand Up @@ -179,6 +180,7 @@ struct Llvm {
version_check: Option<bool>,
static_libstdcpp: Option<bool>,
targets: Option<String>,
link_jobs: Option<u32>,
}

#[derive(RustcDecodable, Default, Clone)]
Expand Down Expand Up @@ -333,6 +335,7 @@ impl Config {
set(&mut config.llvm_version_check, llvm.version_check);
set(&mut config.llvm_static_stdcpp, llvm.static_libstdcpp);
config.llvm_targets = llvm.targets.clone();
config.llvm_link_jobs = llvm.link_jobs;
}

if let Some(ref rust) = toml.rust {
Expand Down
8 changes: 8 additions & 0 deletions src/bootstrap/config.toml.example
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,14 @@
# Rust team and file an issue if you need assistance in porting!
#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
# =============================================================================
Expand Down
6 changes: 6 additions & 0 deletions src/bootstrap/native.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,12 @@ pub fn llvm(build: &Build, target: &str) {
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
if target != build.config.build {
// FIXME: if the llvm root for the build triple is overridden then we
Expand Down

0 comments on commit 58ff4f6

Please sign in to comment.