Skip to content

Commit

Permalink
add utility musl_root method, update config.toml.example
Browse files Browse the repository at this point in the history
  • Loading branch information
Jorge Aparicio committed Sep 7, 2016
1 parent 8df4a76 commit 8cfc69e
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 8 deletions.
3 changes: 1 addition & 2 deletions src/bootstrap/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ pub fn std<'a>(build: &'a Build, target: &str, compiler: &Compiler<'a>) {
}
}
if target.contains("musl") {
if let Some(p) = build.config.target_config[target].musl_root.as_ref()
.or(build.config.musl_root.as_ref()) {
if let Some(p) = build.musl_root(target) {
cargo.env("MUSL_ROOT", p);
}
}
Expand Down
10 changes: 6 additions & 4 deletions src/bootstrap/config.toml.example
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,6 @@
# nightly features
#channel = "dev"

# The root location of the MUSL installation directory. The library directory
# will also need to contain libunwind.a for an unwinding implementation.
#musl-root = "..."

# By default the `rustc` executable is built with `-Wl,-rpath` flags on Unix
# platforms to ensure that the compiler is usable by default from the build
# directory (as it links to a number of dynamic libraries). This may not be
Expand Down Expand Up @@ -160,3 +156,9 @@
# the NDK for the target lives. This is used to find the C compiler to link and
# build native code.
#android-ndk = "/path/to/ndk"

# The root location of the MUSL installation directory. The library directory
# will also need to contain libunwind.a for an unwinding implementation. Note
# that this option only makes sense for MUSL targets that produce statically
# linked binaries
#musl-root = "..."
7 changes: 7 additions & 0 deletions src/bootstrap/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -977,6 +977,13 @@ impl Build {
}
return base
}

/// Returns the "musl root" for this `target`, if defined
fn musl_root(&self, target: &str) -> Option<&Path> {
self.config.target_config[target].musl_root.as_ref()
.or(self.config.musl_root.as_ref())
.map(|p| &**p)
}
}

impl<'a> Compiler<'a> {
Expand Down
3 changes: 1 addition & 2 deletions src/bootstrap/sanity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,7 @@ pub fn check(build: &mut Build) {

// Make sure musl-root is valid if specified
if target.contains("musl") && !target.contains("mips") {
match build.config.target_config[target].musl_root.as_ref()
.or(build.config.musl_root.as_ref()) {
match build.musl_root(target) {
Some(root) => {
if fs::metadata(root.join("lib/libc.a")).is_err() {
panic!("couldn't find libc.a in musl dir: {}",
Expand Down

0 comments on commit 8cfc69e

Please sign in to comment.