Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 26d0e51

Browse files
committedJun 8, 2020
bootstrap: Factor out common code in supported_sanitizers
1 parent 18b51c3 commit 26d0e51

File tree

1 file changed

+29
-45
lines changed

1 file changed

+29
-45
lines changed
 

‎src/bootstrap/native.rs

+29-45
Original file line numberDiff line numberDiff line change
@@ -689,57 +689,41 @@ fn supported_sanitizers(
689689
target: Interned<String>,
690690
channel: &str,
691691
) -> Vec<SanitizerRuntime> {
692-
let mut result = Vec::new();
692+
let darwin_libs = |os: &str, components: &[&str]| -> Vec<SanitizerRuntime> {
693+
components
694+
.into_iter()
695+
.map(move |c| SanitizerRuntime {
696+
cmake_target: format!("clang_rt.{}_{}_dynamic", c, os),
697+
path: out_dir
698+
.join(&format!("build/lib/darwin/libclang_rt.{}_{}_dynamic.dylib", c, os)),
699+
name: format!("librustc-{}_rt.{}.dylib", channel, c),
700+
})
701+
.collect()
702+
};
703+
704+
let common_libs = |os: &str, arch: &str, components: &[&str]| -> Vec<SanitizerRuntime> {
705+
components
706+
.into_iter()
707+
.map(move |c| SanitizerRuntime {
708+
cmake_target: format!("clang_rt.{}-{}", c, arch),
709+
path: out_dir.join(&format!("build/lib/{}/libclang_rt.{}-{}.a", os, c, arch)),
710+
name: format!("librustc-{}_rt.{}.a", channel, c),
711+
})
712+
.collect()
713+
};
714+
693715
match &*target {
694-
"x86_64-apple-darwin" => {
695-
for s in &["asan", "lsan", "tsan"] {
696-
result.push(SanitizerRuntime {
697-
cmake_target: format!("clang_rt.{}_osx_dynamic", s),
698-
path: out_dir
699-
.join(&format!("build/lib/darwin/libclang_rt.{}_osx_dynamic.dylib", s)),
700-
name: format!("librustc-{}_rt.{}.dylib", channel, s),
701-
});
702-
}
703-
}
716+
"aarch64-fuchsia" => common_libs("fuchsia", "aarch64", &["asan"]),
704717
"aarch64-unknown-linux-gnu" => {
705-
for s in &["asan", "lsan", "msan", "tsan"] {
706-
result.push(SanitizerRuntime {
707-
cmake_target: format!("clang_rt.{}-aarch64", s),
708-
path: out_dir.join(&format!("build/lib/linux/libclang_rt.{}-aarch64.a", s)),
709-
name: format!("librustc-{}_rt.{}.a", channel, s),
710-
});
711-
}
718+
common_libs("linux", "aarch64", &["asan", "lsan", "msan", "tsan"])
712719
}
720+
"x86_64-apple-darwin" => darwin_libs("osx", &["asan", "lsan", "tsan"]),
721+
"x86_64-fuchsia" => common_libs("fuchsia", "x86_64", &["asan"]),
713722
"x86_64-unknown-linux-gnu" => {
714-
for s in &["asan", "lsan", "msan", "tsan"] {
715-
result.push(SanitizerRuntime {
716-
cmake_target: format!("clang_rt.{}-x86_64", s),
717-
path: out_dir.join(&format!("build/lib/linux/libclang_rt.{}-x86_64.a", s)),
718-
name: format!("librustc-{}_rt.{}.a", channel, s),
719-
});
720-
}
721-
}
722-
"x86_64-fuchsia" => {
723-
for s in &["asan"] {
724-
result.push(SanitizerRuntime {
725-
cmake_target: format!("clang_rt.{}-x86_64", s),
726-
path: out_dir.join(&format!("build/lib/fuchsia/libclang_rt.{}-x86_64.a", s)),
727-
name: format!("librustc-{}_rt.{}.a", channel, s),
728-
});
729-
}
730-
}
731-
"aarch64-fuchsia" => {
732-
for s in &["asan"] {
733-
result.push(SanitizerRuntime {
734-
cmake_target: format!("clang_rt.{}-aarch64", s),
735-
path: out_dir.join(&format!("build/lib/fuchsia/libclang_rt.{}-aarch64.a", s)),
736-
name: format!("librustc-{}_rt.{}.a", channel, s),
737-
});
738-
}
723+
common_libs("linux", "x86_64", &["asan", "lsan", "msan", "tsan"])
739724
}
740-
_ => {}
725+
_ => Vec::new(),
741726
}
742-
result
743727
}
744728

745729
struct HashStamp {

0 commit comments

Comments
 (0)
Please sign in to comment.