use std::env; // Based on https://github.com/serde-rs/serde/blob/master/serde/build.rs fn main() { let target = env::var("TARGET").unwrap(); let emscripten = target == "asmjs-unknown-emscripten" || target == "wasm32-unknown-emscripten"; // Whitelist of archs that support std::sync::atomic module. Ideally we // would use #[cfg(target_has_atomic = "...")] but it is not stable yet. // Instead this is based on rustc's src/librustc_target/spec/*.rs. let has_atomic64 = target.starts_with("x86_64") || target.starts_with("i686") || target.starts_with("aarch64") || target.starts_with("powerpc64") || target.starts_with("sparc64") || target.starts_with("mips64el"); let has_atomic32 = has_atomic64 || emscripten; if has_atomic64 { println!("cargo:rustc-cfg=std_atomic64"); } if has_atomic32 { println!("cargo:rustc-cfg=std_atomic"); } }