rustbuild: include channel in sanitizers installed name
Allows parallel install of different rust channels Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
This commit is contained in:
parent
dc4242d905
commit
1bba9cfb90
3 changed files with 19 additions and 8 deletions
|
@ -571,7 +571,7 @@ impl Step for Sanitizers {
|
||||||
}
|
}
|
||||||
|
|
||||||
let out_dir = builder.native_dir(self.target).join("sanitizers");
|
let out_dir = builder.native_dir(self.target).join("sanitizers");
|
||||||
let runtimes = supported_sanitizers(&out_dir, self.target);
|
let runtimes = supported_sanitizers(&out_dir, self.target, &builder.config.channel);
|
||||||
if runtimes.is_empty() {
|
if runtimes.is_empty() {
|
||||||
return runtimes;
|
return runtimes;
|
||||||
}
|
}
|
||||||
|
@ -635,7 +635,11 @@ pub struct SanitizerRuntime {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns sanitizers available on a given target.
|
/// Returns sanitizers available on a given target.
|
||||||
fn supported_sanitizers(out_dir: &Path, target: Interned<String>) -> Vec<SanitizerRuntime> {
|
fn supported_sanitizers(
|
||||||
|
out_dir: &Path,
|
||||||
|
target: Interned<String>,
|
||||||
|
channel: &str,
|
||||||
|
) -> Vec<SanitizerRuntime> {
|
||||||
let mut result = Vec::new();
|
let mut result = Vec::new();
|
||||||
match &*target {
|
match &*target {
|
||||||
"x86_64-apple-darwin" => {
|
"x86_64-apple-darwin" => {
|
||||||
|
@ -644,7 +648,7 @@ fn supported_sanitizers(out_dir: &Path, target: Interned<String>) -> Vec<Sanitiz
|
||||||
cmake_target: format!("clang_rt.{}_osx_dynamic", s),
|
cmake_target: format!("clang_rt.{}_osx_dynamic", s),
|
||||||
path: out_dir
|
path: out_dir
|
||||||
.join(&format!("build/lib/darwin/libclang_rt.{}_osx_dynamic.dylib", s)),
|
.join(&format!("build/lib/darwin/libclang_rt.{}_osx_dynamic.dylib", s)),
|
||||||
name: format!("librustc_rt.{}.dylib", s),
|
name: format!("librustc-{}_rt.{}.dylib", channel, s),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -653,7 +657,7 @@ fn supported_sanitizers(out_dir: &Path, target: Interned<String>) -> Vec<Sanitiz
|
||||||
result.push(SanitizerRuntime {
|
result.push(SanitizerRuntime {
|
||||||
cmake_target: format!("clang_rt.{}-x86_64", s),
|
cmake_target: format!("clang_rt.{}-x86_64", s),
|
||||||
path: out_dir.join(&format!("build/lib/linux/libclang_rt.{}-x86_64.a", s)),
|
path: out_dir.join(&format!("build/lib/linux/libclang_rt.{}-x86_64.a", s)),
|
||||||
name: format!("librustc_rt.{}.a", s),
|
name: format!("librustc-{}_rt.{}.a", channel, s),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -662,7 +666,7 @@ fn supported_sanitizers(out_dir: &Path, target: Interned<String>) -> Vec<Sanitiz
|
||||||
result.push(SanitizerRuntime {
|
result.push(SanitizerRuntime {
|
||||||
cmake_target: format!("clang_rt.{}-x86_64", s),
|
cmake_target: format!("clang_rt.{}-x86_64", s),
|
||||||
path: out_dir.join(&format!("build/lib/fuchsia/libclang_rt.{}-x86_64.a", s)),
|
path: out_dir.join(&format!("build/lib/fuchsia/libclang_rt.{}-x86_64.a", s)),
|
||||||
name: format!("librustc_rt.{}.a", s),
|
name: format!("librustc-{}_rt.{}.a", channel, s),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -671,7 +675,7 @@ fn supported_sanitizers(out_dir: &Path, target: Interned<String>) -> Vec<Sanitiz
|
||||||
result.push(SanitizerRuntime {
|
result.push(SanitizerRuntime {
|
||||||
cmake_target: format!("clang_rt.{}-aarch64", s),
|
cmake_target: format!("clang_rt.{}-aarch64", s),
|
||||||
path: out_dir.join(&format!("build/lib/fuchsia/libclang_rt.{}-aarch64.a", s)),
|
path: out_dir.join(&format!("build/lib/fuchsia/libclang_rt.{}-aarch64.a", s)),
|
||||||
name: format!("librustc_rt.{}.a", s),
|
name: format!("librustc-{}_rt.{}.a", channel, s),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -765,6 +765,9 @@ fn link_sanitizer_runtime(sess: &Session, crate_type: config::CrateType, linker:
|
||||||
let default_sysroot = filesearch::get_or_default_sysroot();
|
let default_sysroot = filesearch::get_or_default_sysroot();
|
||||||
let default_tlib =
|
let default_tlib =
|
||||||
filesearch::make_target_lib_path(&default_sysroot, sess.opts.target_triple.triple());
|
filesearch::make_target_lib_path(&default_sysroot, sess.opts.target_triple.triple());
|
||||||
|
let channel = option_env!("CFG_RELEASE_CHANNEL")
|
||||||
|
.map(|channel| format!("-{}", channel))
|
||||||
|
.unwrap_or_default();
|
||||||
|
|
||||||
match sess.opts.target_triple.triple() {
|
match sess.opts.target_triple.triple() {
|
||||||
"x86_64-apple-darwin" => {
|
"x86_64-apple-darwin" => {
|
||||||
|
@ -772,13 +775,13 @@ fn link_sanitizer_runtime(sess: &Session, crate_type: config::CrateType, linker:
|
||||||
// LLVM will link to `@rpath/*.dylib`, so we need to specify an
|
// LLVM will link to `@rpath/*.dylib`, so we need to specify an
|
||||||
// rpath to the library as well (the rpath should be absolute, see
|
// rpath to the library as well (the rpath should be absolute, see
|
||||||
// PR #41352 for details).
|
// PR #41352 for details).
|
||||||
let libname = format!("rustc_rt.{}", name);
|
let libname = format!("rustc{}_rt.{}", channel, name);
|
||||||
let rpath = default_tlib.to_str().expect("non-utf8 component in path");
|
let rpath = default_tlib.to_str().expect("non-utf8 component in path");
|
||||||
linker.args(&["-Wl,-rpath".into(), "-Xlinker".into(), rpath.into()]);
|
linker.args(&["-Wl,-rpath".into(), "-Xlinker".into(), rpath.into()]);
|
||||||
linker.link_dylib(Symbol::intern(&libname));
|
linker.link_dylib(Symbol::intern(&libname));
|
||||||
}
|
}
|
||||||
"x86_64-unknown-linux-gnu" | "x86_64-fuchsia" | "aarch64-fuchsia" => {
|
"x86_64-unknown-linux-gnu" | "x86_64-fuchsia" | "aarch64-fuchsia" => {
|
||||||
let filename = format!("librustc_rt.{}.a", name);
|
let filename = format!("librustc{}_rt.{}.a", channel, name);
|
||||||
let path = default_tlib.join(&filename);
|
let path = default_tlib.join(&filename);
|
||||||
linker.link_whole_rlib(&path);
|
linker.link_whole_rlib(&path);
|
||||||
}
|
}
|
||||||
|
|
4
src/librustc_codegen_ssa/build.rs
Normal file
4
src/librustc_codegen_ssa/build.rs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
fn main() {
|
||||||
|
println!("cargo:rerun-if-changed=build.rs");
|
||||||
|
println!("cargo:rerun-if-env-changed=CFG_RELEASE_CHANNEL");
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue