1 //! This build script detects target platforms that lack proper support for
\r
2 //! atomics and sets `cfg` flags accordingly.
\r
8 let target = match rustc_target() {
\r
9 Some(target) => target,
\r
13 if target_has_atomic_cas(&target) {
\r
14 println!("cargo:rustc-cfg=atomic_cas");
\r
17 if target_has_atomics(&target) {
\r
18 println!("cargo:rustc-cfg=has_atomics");
\r
21 println!("cargo:rerun-if-changed=build.rs");
\r
24 fn target_has_atomic_cas(target: &str) -> bool {
\r
26 "thumbv6m-none-eabi"
\r
28 | "riscv32i-unknown-none-elf"
\r
29 | "riscv32imc-unknown-none-elf" => false,
\r
34 fn target_has_atomics(target: &str) -> bool {
\r
36 "thumbv4t-none-eabi"
\r
38 | "riscv32i-unknown-none-elf"
\r
39 | "riscv32imc-unknown-none-elf" => false,
\r
44 fn rustc_target() -> Option<String> {
\r
45 env::var("TARGET").ok()
\r