12d8ae3abSopenharmony_ci//! This build script detects target platforms that lack proper support for 22d8ae3abSopenharmony_ci//! atomics and sets `cfg` flags accordingly. 32d8ae3abSopenharmony_ci 42d8ae3abSopenharmony_ciuse std::env; 52d8ae3abSopenharmony_ciuse std::str; 62d8ae3abSopenharmony_ci 72d8ae3abSopenharmony_cifn main() { 82d8ae3abSopenharmony_ci let target = match rustc_target() { 92d8ae3abSopenharmony_ci Some(target) => target, 102d8ae3abSopenharmony_ci None => return, 112d8ae3abSopenharmony_ci }; 122d8ae3abSopenharmony_ci 132d8ae3abSopenharmony_ci if target_has_atomic_cas(&target) { 142d8ae3abSopenharmony_ci println!("cargo:rustc-cfg=atomic_cas"); 152d8ae3abSopenharmony_ci } 162d8ae3abSopenharmony_ci 172d8ae3abSopenharmony_ci if target_has_atomics(&target) { 182d8ae3abSopenharmony_ci println!("cargo:rustc-cfg=has_atomics"); 192d8ae3abSopenharmony_ci } 202d8ae3abSopenharmony_ci 212d8ae3abSopenharmony_ci println!("cargo:rerun-if-changed=build.rs"); 222d8ae3abSopenharmony_ci} 232d8ae3abSopenharmony_ci 242d8ae3abSopenharmony_cifn target_has_atomic_cas(target: &str) -> bool { 252d8ae3abSopenharmony_ci match &target[..] { 262d8ae3abSopenharmony_ci "thumbv6m-none-eabi" 272d8ae3abSopenharmony_ci | "msp430-none-elf" 282d8ae3abSopenharmony_ci | "riscv32i-unknown-none-elf" 292d8ae3abSopenharmony_ci | "riscv32imc-unknown-none-elf" => false, 302d8ae3abSopenharmony_ci _ => true, 312d8ae3abSopenharmony_ci } 322d8ae3abSopenharmony_ci} 332d8ae3abSopenharmony_ci 342d8ae3abSopenharmony_cifn target_has_atomics(target: &str) -> bool { 352d8ae3abSopenharmony_ci match &target[..] { 362d8ae3abSopenharmony_ci "thumbv4t-none-eabi" 372d8ae3abSopenharmony_ci | "msp430-none-elf" 382d8ae3abSopenharmony_ci | "riscv32i-unknown-none-elf" 392d8ae3abSopenharmony_ci | "riscv32imc-unknown-none-elf" => false, 402d8ae3abSopenharmony_ci _ => true, 412d8ae3abSopenharmony_ci } 422d8ae3abSopenharmony_ci} 432d8ae3abSopenharmony_ci 442d8ae3abSopenharmony_cifn rustc_target() -> Option<String> { 452d8ae3abSopenharmony_ci env::var("TARGET").ok() 462d8ae3abSopenharmony_ci} 47