| use std::env; |
| |
| fn main() { |
| println!("cargo:rerun-if-changed=build.rs"); |
| let target_arch = env::var("CARGO_CFG_TARGET_ARCH").expect("CARGO_CFG_TARGET_ARCH was not set"); |
| let target_os = env::var("CARGO_CFG_TARGET_OS").expect("CARGO_CFG_TARGET_OS was not set"); |
| let target_vendor = |
| env::var("CARGO_CFG_TARGET_VENDOR").expect("CARGO_CFG_TARGET_VENDOR was not set"); |
| let target_env = env::var("CARGO_CFG_TARGET_ENV").expect("CARGO_CFG_TARGET_ENV was not set"); |
| if target_os == "netbsd" && env::var("RUSTC_STD_NETBSD10").is_ok() { |
| println!("cargo:rustc-cfg=netbsd10"); |
| } |
| if target_os == "linux" |
| || target_os == "android" |
| || target_os == "netbsd" |
| || target_os == "dragonfly" |
| || target_os == "openbsd" |
| || target_os == "freebsd" |
| || target_os == "solaris" |
| || target_os == "illumos" |
| || target_os == "macos" |
| || target_os == "ios" |
| || target_os == "tvos" |
| || target_os == "watchos" |
| || target_os == "windows" |
| || target_os == "fuchsia" |
| || (target_vendor == "fortanix" && target_env == "sgx") |
| || target_os == "hermit" |
| || target_os == "l4re" |
| || target_os == "redox" |
| || target_os == "haiku" |
| || target_os == "vxworks" |
| || target_arch == "wasm32" |
| || target_arch == "wasm64" |
| || target_os == "espidf" |
| || target_os.starts_with("solid") |
| || (target_vendor == "nintendo" && target_env == "newlib") |
| || target_os == "vita" |
| || target_os == "aix" |
| || target_os == "nto" |
| || target_os == "xous" |
| || target_os == "hurd" |
| || target_os == "uefi" |
| || target_os == "teeos" |
| || target_os == "zkvm" |
| |
| // See src/bootstrap/src/core/build_steps/synthetic_targets.rs |
| || env::var("RUSTC_BOOTSTRAP_SYNTHETIC_TARGET").is_ok() |
| { |
| // These platforms don't have any special requirements. |
| } else { |
| // This is for Cargo's build-std support, to mark std as unstable for |
| // typically no_std platforms. |
| // This covers: |
| // - os=none ("bare metal" targets) |
| // - mipsel-sony-psp |
| // - nvptx64-nvidia-cuda |
| // - arch=avr |
| // - JSON targets |
| // - Any new targets that have not been explicitly added above. |
| println!("cargo:rustc-cfg=feature=\"restricted-std\""); |
| } |
| println!("cargo:rustc-env=STD_ENV_ARCH={}", env::var("CARGO_CFG_TARGET_ARCH").unwrap()); |
| println!("cargo:rustc-cfg=backtrace_in_libstd"); |
| } |