Skip to content

Commit

Permalink
Build support for no llvm
Browse files Browse the repository at this point in the history
  • Loading branch information
bjorn3 committed Aug 11, 2017
1 parent 73c3f55 commit e152a16
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/bootstrap/config.rs
Expand Up @@ -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,
Expand Down Expand Up @@ -192,6 +193,7 @@ struct Install {
#[derive(Deserialize, Default)]
#[serde(deny_unknown_fields, rename_all = "kebab-case")]
struct Llvm {
enabled: Option<bool>,
ccache: Option<StringOrBool>,
ninja: Option<bool>,
assertions: Option<bool>,
Expand Down Expand Up @@ -265,6 +267,7 @@ struct TomlTarget {
impl Config {
pub fn parse(build: &str, file: Option<PathBuf>) -> Config {
let mut config = Config::default();
config.llvm_enabled = true;
config.llvm_optimize = true;
config.use_jemalloc = true;
config.backtrace = true;
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 4 additions & 0 deletions src/bootstrap/config.toml.example
Expand Up @@ -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

Expand Down
3 changes: 3 additions & 0 deletions src/bootstrap/lib.rs
Expand Up @@ -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
}

Expand Down
6 changes: 6 additions & 0 deletions src/bootstrap/native.rs
Expand Up @@ -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) {
Expand Down

0 comments on commit e152a16

Please sign in to comment.