diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2016-12-29 17:28:19 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2016-12-29 17:28:19 -0800 |
| commit | ebea2ea34faf85688daeee703b925d25e63024fb (patch) | |
| tree | 8386d020cafd2ccac0e61c23ea8fc142821aaeac /src | |
| parent | 334af886589f2854d9027d60fa79a62b6e5b4980 (diff) | |
| parent | 0f8e931475b1f7864504f509b389d28e1ffbc93a (diff) | |
| download | rust-ebea2ea34faf85688daeee703b925d25e63024fb.tar.gz rust-ebea2ea34faf85688daeee703b925d25e63024fb.zip | |
Merge branch 'rustbuild-llvm-targets' of https://github.com/xen0n/rust into rollup
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/config.rs | 3 | ||||
| -rw-r--r-- | src/bootstrap/config.toml.example | 11 | ||||
| -rw-r--r-- | src/bootstrap/native.rs | 9 |
3 files changed, 21 insertions, 2 deletions
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 93fe39ab41b..9767afd73ca 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -55,6 +55,7 @@ pub struct Config { pub llvm_version_check: bool, pub llvm_static_stdcpp: bool, pub llvm_link_shared: bool, + pub llvm_targets: Option<String>, // rust codegen options pub rust_optimize: bool, @@ -154,6 +155,7 @@ struct Llvm { release_debuginfo: Option<bool>, version_check: Option<bool>, static_libstdcpp: Option<bool>, + targets: Option<String>, } #[derive(RustcDecodable)] @@ -288,6 +290,7 @@ impl Config { set(&mut config.llvm_release_debuginfo, llvm.release_debuginfo); set(&mut config.llvm_version_check, llvm.version_check); set(&mut config.llvm_static_stdcpp, llvm.static_libstdcpp); + config.llvm_targets = llvm.targets.clone(); } if let Some(ref rust) = toml.rust { diff --git a/src/bootstrap/config.toml.example b/src/bootstrap/config.toml.example index 7c8d3870e92..b476478fdd1 100644 --- a/src/bootstrap/config.toml.example +++ b/src/bootstrap/config.toml.example @@ -42,6 +42,17 @@ # example. #ninja = false +# LLVM targets to build support for. +# Note: this is NOT related to Rust compilation targets. However, as Rust is +# dependent on LLVM for code generation, turning targets off here WILL lead to +# the resulting rustc being unable to compile for the disabled architectures. +# Also worth pointing out is that, in case support for new targets are added to +# LLVM, enabling them here doesn't mean Rust is automatically gaining said +# support. You'll need to write a target specification at least, and most +# likely, teach rustc about the C ABI of the target. Get in touch with the +# Rust team and file an issue if you need assistance in porting! +#targets = "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc" + # ============================================================================= # General build configuration options # ============================================================================= diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs index 80f27a5ab67..4b6fef8edc1 100644 --- a/src/bootstrap/native.rs +++ b/src/bootstrap/native.rs @@ -75,13 +75,18 @@ pub fn llvm(build: &Build, target: &str) { (true, true) => "RelWithDebInfo", }; + // NOTE: remember to also update `config.toml.example` when changing the defaults! + let llvm_targets = match build.config.llvm_targets { + Some(ref s) => s, + None => "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX", + }; + cfg.target(target) .host(&build.config.build) .out_dir(&dst) .profile(profile) .define("LLVM_ENABLE_ASSERTIONS", assertions) - .define("LLVM_TARGETS_TO_BUILD", - "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX") + .define("LLVM_TARGETS_TO_BUILD", llvm_targets) .define("LLVM_INCLUDE_EXAMPLES", "OFF") .define("LLVM_INCLUDE_TESTS", "OFF") .define("LLVM_INCLUDE_DOCS", "OFF") |
