6fd0d1ba14
It might happen that a synthetic target name does not match one of the hardcoded ones in std's build script, causing std to fail to build. This commit changes the std build script avoid including the restricted-std feature unconditionally when a synthetic target is being built.
60 lines
2.3 KiB
Rust
60 lines
2.3 KiB
Rust
use std::env;
|
|
|
|
fn main() {
|
|
println!("cargo:rerun-if-changed=build.rs");
|
|
let target = env::var("TARGET").expect("TARGET was not set");
|
|
if target.contains("freebsd") {
|
|
if env::var("RUST_STD_FREEBSD_12_ABI").is_ok() {
|
|
println!("cargo:rustc-cfg=freebsd12");
|
|
} else if env::var("RUST_STD_FREEBSD_13_ABI").is_ok() {
|
|
println!("cargo:rustc-cfg=freebsd12");
|
|
println!("cargo:rustc-cfg=freebsd13");
|
|
}
|
|
} else if target.contains("linux")
|
|
|| target.contains("netbsd")
|
|
|| target.contains("dragonfly")
|
|
|| target.contains("openbsd")
|
|
|| target.contains("solaris")
|
|
|| target.contains("illumos")
|
|
|| target.contains("apple-darwin")
|
|
|| target.contains("apple-ios")
|
|
|| target.contains("apple-watchos")
|
|
|| target.contains("uwp")
|
|
|| target.contains("windows")
|
|
|| target.contains("fuchsia")
|
|
|| (target.contains("sgx") && target.contains("fortanix"))
|
|
|| target.contains("hermit")
|
|
|| target.contains("l4re")
|
|
|| target.contains("redox")
|
|
|| target.contains("haiku")
|
|
|| target.contains("vxworks")
|
|
|| target.contains("wasm32")
|
|
|| target.contains("wasm64")
|
|
|| target.contains("asmjs")
|
|
|| target.contains("espidf")
|
|
|| target.contains("solid")
|
|
|| target.contains("nintendo-3ds")
|
|
|| target.contains("vita")
|
|
|| target.contains("nto")
|
|
// See src/bootstrap/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
|
|
// - tvos (aarch64-apple-tvos, x86_64-apple-tvos)
|
|
// - uefi (x86_64-unknown-uefi, i686-unknown-uefi)
|
|
// - 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");
|
|
}
|