diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 5d898cb716d..ec57bb069e0 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -53,6 +53,7 @@ pub struct Config { pub profiler: bool, // llvm codegen options + pub llvm_enabled: bool, pub llvm_assertions: bool, pub llvm_optimize: bool, pub llvm_release_debuginfo: bool, @@ -192,6 +193,7 @@ struct Install { #[derive(Deserialize, Default)] #[serde(deny_unknown_fields, rename_all = "kebab-case")] struct Llvm { + enabled: Option, ccache: Option, ninja: Option, assertions: Option, @@ -265,6 +267,7 @@ struct TomlTarget { impl Config { pub fn parse(build: &str, file: Option) -> Config { let mut config = Config::default(); + config.llvm_enabled = true; config.llvm_optimize = true; config.use_jemalloc = true; config.backtrace = true; @@ -345,6 +348,7 @@ impl Config { Some(StringOrBool::Bool(false)) | None => {} } set(&mut config.ninja, llvm.ninja); + set(&mut config.llvm_enabled, llvm.enabled); set(&mut config.llvm_assertions, llvm.assertions); set(&mut config.llvm_optimize, llvm.optimize); set(&mut config.llvm_release_debuginfo, llvm.release_debuginfo); diff --git a/src/bootstrap/config.toml.example b/src/bootstrap/config.toml.example index 9314135050f..19678dc7793 100644 --- a/src/bootstrap/config.toml.example +++ b/src/bootstrap/config.toml.example @@ -14,6 +14,10 @@ # ============================================================================= [llvm] +# Indicates whether rustc will support compilation with LLVM +# note: rustc does not compile without LLVM at the moment +#enabled = true + # Indicates whether the LLVM build is a Release or Debug build #optimize = true diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 5b5ef3f07f9..a8485d1d152 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -429,6 +429,9 @@ impl Build { if self.config.use_jemalloc { features.push_str(" jemalloc"); } + if self.config.llvm_enabled { + features.push_str(" llvm"); + } features } diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs index ee0eca5d482..59efbd5c4d2 100644 --- a/src/bootstrap/native.rs +++ b/src/bootstrap/native.rs @@ -56,6 +56,12 @@ impl Step for Llvm { fn run(self, builder: &Builder) { let build = builder.build; let target = self.target; + + // If we're not compiling for LLVM bail out here. + if !build.config.llvm_enabled { + return; + } + // If we're using a custom LLVM bail out here, but we can only use a // custom LLVM for the build triple. if let Some(config) = build.config.target_config.get(&target) {