systems: set rust.platform.env as rustc does (#531986)
This commit is contained in:
@@ -23,6 +23,7 @@ let
|
||||
platforms = import ./platforms.nix { inherit lib; };
|
||||
examples = import ./examples.nix { inherit lib; };
|
||||
architectures = import ./architectures.nix { inherit lib; };
|
||||
rustc-target-env = import ./rustc-target-env.nix;
|
||||
|
||||
/**
|
||||
Elaborated systems contain functions, which means that they don't satisfy
|
||||
@@ -449,6 +450,16 @@ let
|
||||
else
|
||||
final.parsed.cpu.name;
|
||||
|
||||
# https://doc.rust-lang.org/reference/conditional-compilation.html#target_env
|
||||
# Accomodate system definitions written before Nixpkgs learned about target_env.
|
||||
env =
|
||||
if rust ? platform.env then
|
||||
rust.platform.env
|
||||
else if rustc-target-env ? ${final.rust.rustcTargetSpec} then
|
||||
rustc-target-env.${final.rust.rustcTargetSpec}
|
||||
else
|
||||
"";
|
||||
|
||||
# https://doc.rust-lang.org/reference/conditional-compilation.html#target_os
|
||||
os =
|
||||
if rust ? platform then
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
# As of rustc 1.96.0. Empty `target_env` values are omitted.
|
||||
#
|
||||
# Generation script:
|
||||
# #!/bin/bash
|
||||
# rustc --print target-list | while read -r target ; do
|
||||
# env=$(rustc --print cfg --target "$target" | grep '^target_env=' | sed 's/# ^target_env="//;s/"$//')
|
||||
# [[ -z "$env" ]] && continue
|
||||
# printf ' %s = "%s";\n' "$target" "$env"
|
||||
# done
|
||||
{
|
||||
aarch64-apple-ios-macabi = "macabi";
|
||||
aarch64-apple-ios-sim = "sim";
|
||||
aarch64-apple-tvos-sim = "sim";
|
||||
aarch64-apple-visionos-sim = "sim";
|
||||
aarch64-apple-watchos-sim = "sim";
|
||||
aarch64-pc-windows-gnullvm = "gnu";
|
||||
aarch64-pc-windows-msvc = "msvc";
|
||||
aarch64-unknown-linux-gnu = "gnu";
|
||||
aarch64-unknown-linux-gnu_ilp32 = "gnu";
|
||||
aarch64-unknown-linux-musl = "musl";
|
||||
aarch64-unknown-linux-ohos = "ohos";
|
||||
aarch64-unknown-managarm-mlibc = "mlibc";
|
||||
aarch64-unknown-nto-qnx700 = "nto70";
|
||||
aarch64-unknown-nto-qnx710 = "nto71";
|
||||
aarch64-unknown-nto-qnx710_iosock = "nto71_iosock";
|
||||
aarch64-unknown-nto-qnx800 = "nto80";
|
||||
aarch64-unknown-redox = "relibc";
|
||||
aarch64-uwp-windows-msvc = "msvc";
|
||||
aarch64-wrs-vxworks = "gnu";
|
||||
aarch64_be-unknown-linux-gnu = "gnu";
|
||||
aarch64_be-unknown-linux-gnu_ilp32 = "gnu";
|
||||
aarch64_be-unknown-linux-musl = "musl";
|
||||
arm-unknown-linux-gnueabi = "gnu";
|
||||
arm-unknown-linux-gnueabihf = "gnu";
|
||||
arm-unknown-linux-musleabi = "musl";
|
||||
arm-unknown-linux-musleabihf = "musl";
|
||||
arm64ec-pc-windows-msvc = "msvc";
|
||||
armeb-unknown-linux-gnueabi = "gnu";
|
||||
armv4t-unknown-linux-gnueabi = "gnu";
|
||||
armv5te-unknown-linux-gnueabi = "gnu";
|
||||
armv5te-unknown-linux-musleabi = "musl";
|
||||
armv5te-unknown-linux-uclibceabi = "uclibc";
|
||||
armv6k-nintendo-3ds = "newlib";
|
||||
armv7-rtems-eabihf = "newlib";
|
||||
armv7-sony-vita-newlibeabihf = "newlib";
|
||||
armv7-unknown-linux-gnueabi = "gnu";
|
||||
armv7-unknown-linux-gnueabihf = "gnu";
|
||||
armv7-unknown-linux-musleabi = "musl";
|
||||
armv7-unknown-linux-musleabihf = "musl";
|
||||
armv7-unknown-linux-ohos = "ohos";
|
||||
armv7-unknown-linux-uclibceabi = "uclibc";
|
||||
armv7-unknown-linux-uclibceabihf = "uclibc";
|
||||
armv7-wrs-vxworks-eabihf = "gnu";
|
||||
armv7a-vex-v5 = "v5";
|
||||
csky-unknown-linux-gnuabiv2 = "gnu";
|
||||
csky-unknown-linux-gnuabiv2hf = "gnu";
|
||||
hexagon-unknown-linux-musl = "musl";
|
||||
i386-apple-ios = "sim";
|
||||
i586-unknown-linux-gnu = "gnu";
|
||||
i586-unknown-linux-musl = "musl";
|
||||
i586-unknown-redox = "relibc";
|
||||
i686-pc-nto-qnx700 = "nto70";
|
||||
i686-pc-windows-gnu = "gnu";
|
||||
i686-pc-windows-gnullvm = "gnu";
|
||||
i686-pc-windows-msvc = "msvc";
|
||||
i686-unknown-hurd-gnu = "gnu";
|
||||
i686-unknown-linux-gnu = "gnu";
|
||||
i686-unknown-linux-musl = "musl";
|
||||
i686-uwp-windows-gnu = "gnu";
|
||||
i686-uwp-windows-msvc = "msvc";
|
||||
i686-win7-windows-gnu = "gnu";
|
||||
i686-win7-windows-msvc = "msvc";
|
||||
i686-wrs-vxworks = "gnu";
|
||||
loongarch64-unknown-linux-gnu = "gnu";
|
||||
loongarch64-unknown-linux-musl = "musl";
|
||||
loongarch64-unknown-linux-ohos = "ohos";
|
||||
m68k-unknown-linux-gnu = "gnu";
|
||||
mips-unknown-linux-gnu = "gnu";
|
||||
mips-unknown-linux-musl = "musl";
|
||||
mips-unknown-linux-uclibc = "uclibc";
|
||||
mips64-openwrt-linux-musl = "musl";
|
||||
mips64-unknown-linux-gnuabi64 = "gnu";
|
||||
mips64-unknown-linux-muslabi64 = "musl";
|
||||
mips64el-unknown-linux-gnuabi64 = "gnu";
|
||||
mips64el-unknown-linux-muslabi64 = "musl";
|
||||
mipsel-unknown-linux-gnu = "gnu";
|
||||
mipsel-unknown-linux-musl = "musl";
|
||||
mipsel-unknown-linux-uclibc = "uclibc";
|
||||
mipsisa32r6-unknown-linux-gnu = "gnu";
|
||||
mipsisa32r6el-unknown-linux-gnu = "gnu";
|
||||
mipsisa64r6-unknown-linux-gnuabi64 = "gnu";
|
||||
mipsisa64r6el-unknown-linux-gnuabi64 = "gnu";
|
||||
powerpc-unknown-linux-gnu = "gnu";
|
||||
powerpc-unknown-linux-gnuspe = "gnu";
|
||||
powerpc-unknown-linux-musl = "musl";
|
||||
powerpc-unknown-linux-muslspe = "musl";
|
||||
powerpc-wrs-vxworks = "gnu";
|
||||
powerpc-wrs-vxworks-spe = "gnu";
|
||||
powerpc64-unknown-linux-gnu = "gnu";
|
||||
powerpc64-unknown-linux-musl = "musl";
|
||||
powerpc64-wrs-vxworks = "gnu";
|
||||
powerpc64le-unknown-linux-gnu = "gnu";
|
||||
powerpc64le-unknown-linux-musl = "musl";
|
||||
riscv32-wrs-vxworks = "gnu";
|
||||
riscv32gc-unknown-linux-gnu = "gnu";
|
||||
riscv32gc-unknown-linux-musl = "musl";
|
||||
riscv32imac-esp-espidf = "newlib";
|
||||
riscv32imafc-esp-espidf = "newlib";
|
||||
riscv32imc-esp-espidf = "newlib";
|
||||
riscv64-wrs-vxworks = "gnu";
|
||||
riscv64a23-unknown-linux-gnu = "gnu";
|
||||
riscv64gc-unknown-linux-gnu = "gnu";
|
||||
riscv64gc-unknown-linux-musl = "musl";
|
||||
riscv64gc-unknown-managarm-mlibc = "mlibc";
|
||||
riscv64gc-unknown-redox = "relibc";
|
||||
s390x-unknown-linux-gnu = "gnu";
|
||||
s390x-unknown-linux-musl = "musl";
|
||||
sparc-unknown-linux-gnu = "gnu";
|
||||
sparc64-unknown-linux-gnu = "gnu";
|
||||
thumbv7a-pc-windows-msvc = "msvc";
|
||||
thumbv7a-uwp-windows-msvc = "msvc";
|
||||
thumbv7neon-unknown-linux-gnueabihf = "gnu";
|
||||
thumbv7neon-unknown-linux-musleabihf = "musl";
|
||||
wasm32-wali-linux-musl = "musl";
|
||||
wasm32-wasip1 = "p1";
|
||||
wasm32-wasip1-threads = "p1";
|
||||
wasm32-wasip2 = "p2";
|
||||
wasm32-wasip3 = "p3";
|
||||
x86_64-apple-ios = "sim";
|
||||
x86_64-apple-ios-macabi = "macabi";
|
||||
x86_64-apple-tvos = "sim";
|
||||
x86_64-apple-watchos-sim = "sim";
|
||||
x86_64-fortanix-unknown-sgx = "sgx";
|
||||
x86_64-pc-nto-qnx710 = "nto71";
|
||||
x86_64-pc-nto-qnx710_iosock = "nto71_iosock";
|
||||
x86_64-pc-nto-qnx800 = "nto80";
|
||||
x86_64-pc-windows-gnu = "gnu";
|
||||
x86_64-pc-windows-gnullvm = "gnu";
|
||||
x86_64-pc-windows-msvc = "msvc";
|
||||
x86_64-unikraft-linux-musl = "musl";
|
||||
x86_64-unknown-hurd-gnu = "gnu";
|
||||
x86_64-unknown-l4re-uclibc = "uclibc";
|
||||
x86_64-unknown-linux-gnu = "gnu";
|
||||
x86_64-unknown-linux-gnuasan = "gnu";
|
||||
x86_64-unknown-linux-gnumsan = "gnu";
|
||||
x86_64-unknown-linux-gnutsan = "gnu";
|
||||
x86_64-unknown-linux-gnux32 = "gnu";
|
||||
x86_64-unknown-linux-musl = "musl";
|
||||
x86_64-unknown-linux-ohos = "ohos";
|
||||
x86_64-unknown-managarm-mlibc = "mlibc";
|
||||
x86_64-unknown-redox = "relibc";
|
||||
x86_64-uwp-windows-gnu = "gnu";
|
||||
x86_64-uwp-windows-msvc = "msvc";
|
||||
x86_64-win7-windows-gnu = "gnu";
|
||||
x86_64-win7-windows-msvc = "msvc";
|
||||
x86_64-wrs-vxworks = "gnu";
|
||||
xtensa-esp32-espidf = "newlib";
|
||||
xtensa-esp32s2-espidf = "newlib";
|
||||
xtensa-esp32s3-espidf = "newlib";
|
||||
}
|
||||
@@ -148,7 +148,7 @@ in
|
||||
export CARGO_CFG_TARGET_OS=${stdenv.hostPlatform.rust.platform.os}
|
||||
export CARGO_CFG_TARGET_FAMILY="unix"
|
||||
export CARGO_CFG_UNIX=1
|
||||
export CARGO_CFG_TARGET_ENV="gnu"
|
||||
export CARGO_CFG_TARGET_ENV=${stdenv.hostPlatform.rust.platform.env}
|
||||
export CARGO_CFG_TARGET_ENDIAN=${
|
||||
if stdenv.hostPlatform.parsed.cpu.significantByte.name == "littleEndian" then "little" else "big"
|
||||
}
|
||||
|
||||
@@ -1008,6 +1008,66 @@ rec {
|
||||
];
|
||||
};
|
||||
|
||||
crateWasm32TargetEnv = assertOutputs {
|
||||
name = "gnu64-crate-target-env";
|
||||
mkCrate = mkCrate pkgsCross.wasm32-unknown-none.buildRustCrate;
|
||||
crateArgs = {
|
||||
crateName = "wasm32-crate-target-env";
|
||||
crateBin = [ { name = "wasm32-crate-target-env"; } ];
|
||||
src = symlinkJoin {
|
||||
name = "wasm32-crate-target-env-sources";
|
||||
paths = [
|
||||
(mkFile "build.rs" ''
|
||||
fn main() {
|
||||
assert_eq!(std::env::var("CARGO_CFG_TARGET_ENV"), Ok("".to_string()));
|
||||
}
|
||||
'')
|
||||
(mkFile "src/main.rs" ''
|
||||
use std::env;
|
||||
#[cfg(target_env = "")]
|
||||
fn main() {
|
||||
let name: String = env::args().nth(0).unwrap();
|
||||
println!("executed {}", name);
|
||||
}
|
||||
'')
|
||||
];
|
||||
};
|
||||
};
|
||||
expectedFiles = [
|
||||
"./bin/wasm32-crate-target-env.wasm"
|
||||
];
|
||||
};
|
||||
|
||||
crateGnu64TargetEnv = assertOutputs {
|
||||
name = "gnu64-crate-target-env";
|
||||
mkCrate = mkCrate pkgsCross.gnu64.buildRustCrate;
|
||||
crateArgs = {
|
||||
crateName = "gnu64-crate-target-env";
|
||||
crateBin = [ { name = "gnu64-crate-target-env"; } ];
|
||||
src = symlinkJoin {
|
||||
name = "gnu64-crate-target-env-sources";
|
||||
paths = [
|
||||
(mkFile "build.rs" ''
|
||||
fn main() {
|
||||
assert_eq!(std::env::var("CARGO_CFG_TARGET_ENV"), Ok("gnu".to_string()));
|
||||
}
|
||||
'')
|
||||
(mkFile "src/main.rs" ''
|
||||
use std::env;
|
||||
#[cfg(target_env = "gnu")]
|
||||
fn main() {
|
||||
let name: String = env::args().nth(0).unwrap();
|
||||
println!("executed {}", name);
|
||||
}
|
||||
'')
|
||||
];
|
||||
};
|
||||
};
|
||||
expectedFiles = [
|
||||
"./bin/gnu64-crate-target-env"
|
||||
];
|
||||
};
|
||||
|
||||
brotliTest =
|
||||
let
|
||||
pkg = brotliCrates.brotli_2_5_0 { };
|
||||
|
||||
Reference in New Issue
Block a user