4 println!("cargo:rerun-if-changed=build.rs");
5 let target = env::var("TARGET").expect("TARGET was not set");
6 if target.contains("freebsd") {
7 if env::var("RUST_STD_FREEBSD_12_ABI").is_ok() {
8 println!("cargo:rustc-cfg=freebsd12");
10 } else if target.contains("linux")
11 || target.contains("netbsd")
12 || target.contains("dragonfly")
13 || target.contains("openbsd")
14 || target.contains("solaris")
15 || target.contains("illumos")
16 || target.contains("apple-darwin")
17 || target.contains("apple-ios")
18 || target.contains("uwp")
19 || target.contains("windows")
20 || target.contains("fuchsia")
21 || (target.contains("sgx") && target.contains("fortanix"))
22 || target.contains("hermit")
23 || target.contains("l4re")
24 || target.contains("redox")
25 || target.contains("haiku")
26 || target.contains("vxworks")
27 || target.contains("wasm32")
28 || target.contains("asmjs")
30 // These platforms don't have any special requirements.
32 // This is for Cargo's build-std support, to mark std as unstable for
33 // typically no_std platforms.
35 // - os=none ("bare metal" targets)
37 // - nvptx64-nvidia-cuda
39 // - tvos (aarch64-apple-tvos, x86_64-apple-tvos)
40 // - uefi (x86_64-unknown-uefi, i686-unknown-uefi)
42 // - Any new targets that have not been explicitly added above.
43 println!("cargo:rustc-cfg=feature=\"restricted-std\"");
45 println!("cargo:rustc-env=STD_ENV_ARCH={}", env::var("CARGO_CFG_TARGET_ARCH").unwrap());
46 println!("cargo:rustc-cfg=backtrace_in_libstd");