summaryrefslogtreecommitdiffstats
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorAdam Joseph <adam@westernsemico.com>2022-08-22 02:05:50 -0700
committerAdam Joseph <adam@westernsemico.com>2022-08-22 02:27:06 -0700
commit8682bd0a81797f64a825c8941272df2a6342bb5c (patch)
treea41ada13d3aeb0ac64ab5838ea7e995004120639 /pkgs/build-support
parenteaf476b6080e0a7d60582cece4d6e4f6463b0814 (diff)
build-support/rust: toTargetArch: strip off endianness
`toTargetArch` in `pkgs/build-support/rust/lib/default.nix` is used to set `CARGO_CFG_TARGET_ARCH`. This environment variable is supposed to be the `<arch>` portion of an LLVM-style platform name: ``` <arch><sub>-<kernel>-<libc><abi> ``` Note that the pointer-width (the "64" in "x86_64" and "mips64") is part of `<arch>`, but the endianness (the `_be` in `aarch64_be`) is *not*. Unfortunately at the moment nixpkgs' parsed `cpuType` has no way to query for the three subparts (name, pointer-width, and subarch/endianness), nor any way to ask for just the first two parts. For now, this commit simply fixes the problem in the two cases that matter: `mips64el` and `powerpc64le`, which I believe are the only two platforms supported by both rust and nixpkgs which have a "subarchitecture".
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/rust/lib/default.nix2
1 files changed, 2 insertions, 0 deletions
diff --git a/pkgs/build-support/rust/lib/default.nix b/pkgs/build-support/rust/lib/default.nix
index 34aaa8c516a9..2be0c2567879 100644
--- a/pkgs/build-support/rust/lib/default.nix
+++ b/pkgs/build-support/rust/lib/default.nix
@@ -5,6 +5,8 @@ rec {
toTargetArch = platform:
/**/ if platform ? rustc.platform then platform.rustc.platform.arch
else if platform.isAarch32 then "arm"
+ else if platform.isMips64 then "mips64" # never add "el" suffix
+ else if platform.isPower64 then "powerpc64" # never add "le" suffix
else platform.parsed.cpu.name;
# https://doc.rust-lang.org/reference/conditional-compilation.html#target_os