forked from mirrors/nixpkgs
Merge pull request #111345 from r-burns/ppc64-big-endian
Enable PPC64 (big-endian)
This commit is contained in:
commit
5fc5e83808
|
@ -24,6 +24,7 @@ let
|
|||
|
||||
"x86_64-redox"
|
||||
|
||||
"powerpc64-linux"
|
||||
"powerpc64le-linux"
|
||||
|
||||
"riscv32-linux" "riscv64-linux"
|
||||
|
@ -72,7 +73,7 @@ in {
|
|||
darwin = filterDoubles predicates.isDarwin;
|
||||
freebsd = filterDoubles predicates.isFreeBSD;
|
||||
# Should be better, but MinGW is unclear.
|
||||
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; });
|
||||
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.elfv1; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.elfv2; });
|
||||
illumos = filterDoubles predicates.isSunOS;
|
||||
linux = filterDoubles predicates.isLinux;
|
||||
netbsd = filterDoubles predicates.isNetBSD;
|
||||
|
@ -85,5 +86,5 @@ in {
|
|||
|
||||
embedded = filterDoubles predicates.isNone;
|
||||
|
||||
mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "armv7a-linux" "aarch64-linux" "powerpc64le-linux"];
|
||||
mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "armv7a-linux" "aarch64-linux" "powerpc64-linux" "powerpc64le-linux"];
|
||||
}
|
||||
|
|
|
@ -21,6 +21,19 @@ rec {
|
|||
config = "powerpc64le-unknown-linux-musl";
|
||||
};
|
||||
|
||||
ppc64-elfv1 = {
|
||||
config = "powerpc64-unknown-linux-elfv1";
|
||||
};
|
||||
ppc64-elfv2 = {
|
||||
config = "powerpc64-unknown-linux-elfv2";
|
||||
};
|
||||
ppc64 = ppc64-elfv2; # default to modern elfv2
|
||||
|
||||
ppc64-musl = {
|
||||
config = "powerpc64-unknown-linux-musl";
|
||||
gcc = { abi = "elfv2"; }; # for gcc configuration
|
||||
};
|
||||
|
||||
sheevaplug = {
|
||||
config = "armv5tel-unknown-linux-gnueabi";
|
||||
} // platforms.sheevaplug;
|
||||
|
|
|
@ -337,10 +337,18 @@ rec {
|
|||
The "gnu" ABI is ambiguous on 32-bit ARM. Use "gnueabi" or "gnueabihf" instead.
|
||||
'';
|
||||
}
|
||||
{ assertion = platform: platform.system != "powerpc64-linux";
|
||||
message = ''
|
||||
The "gnu" ABI is ambiguous on big-endian 64-bit PPC. Use "elfv1" or "elfv2" instead.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
gnuabi64 = { abi = "64"; };
|
||||
|
||||
elfv1 = { abi = "elfv1"; };
|
||||
elfv2 = { abi = "elfv2"; };
|
||||
|
||||
musleabi = { float = "soft"; };
|
||||
musleabihf = { float = "hard"; };
|
||||
musl = {};
|
||||
|
@ -444,6 +452,7 @@ rec {
|
|||
if lib.versionAtLeast (parsed.cpu.version or "0") "6"
|
||||
then abis.gnueabihf
|
||||
else abis.gnueabi
|
||||
else if cpu == "powerpc64" then abis.elfv2
|
||||
else abis.gnu
|
||||
else abis.unknown;
|
||||
};
|
||||
|
|
|
@ -28,7 +28,7 @@ with lib.systems.doubles; lib.runTests {
|
|||
testredox = mseteq redox [ "x86_64-redox" ];
|
||||
testgnu = mseteq gnu (linux /* ++ kfreebsd ++ ... */);
|
||||
testillumos = mseteq illumos [ "x86_64-solaris" ];
|
||||
testlinux = mseteq linux [ "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "mipsel-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux" "powerpc64le-linux" ];
|
||||
testlinux = mseteq linux [ "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "mipsel-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux" "powerpc64-linux" "powerpc64le-linux" ];
|
||||
testnetbsd = mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ];
|
||||
testopenbsd = mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ];
|
||||
testwindows = mseteq windows [ "i686-cygwin" "x86_64-cygwin" "i686-windows" "x86_64-windows" ];
|
||||
|
|
|
@ -11,6 +11,6 @@ in lib.concatLists [
|
|||
(lib.optional (p ? float) "--with-float=${p.float}")
|
||||
(lib.optional (p ? mode) "--with-mode=${p.mode}")
|
||||
(lib.optional
|
||||
(let tp = targetPlatform; in tp.isPower && tp.libc == "glibc" && tp.is64bit && tp.isLittleEndian)
|
||||
(let tp = targetPlatform; in tp.isPower && tp.libc == "glibc" && tp.is64bit)
|
||||
"--with-long-double-128")
|
||||
]
|
||||
|
|
|
@ -54,6 +54,7 @@ in
|
|||
aarch64-linux = stagesLinux;
|
||||
mipsel-linux = stagesLinux;
|
||||
powerpc-linux = /* stagesLinux */ stagesNative;
|
||||
powerpc64-linux = stagesLinux;
|
||||
powerpc64le-linux = stagesLinux;
|
||||
x86_64-darwin = stagesDarwin;
|
||||
x86_64-solaris = stagesNix;
|
||||
|
|
|
@ -17,6 +17,8 @@ in lib.mapAttrs (n: make) (with lib.systems.examples; {
|
|||
armv6l-musl = muslpi;
|
||||
aarch64-musl = aarch64-multiplatform-musl;
|
||||
riscv64 = riscv64;
|
||||
powerpc64 = ppc64;
|
||||
powerpc64-musl = ppc64-musl;
|
||||
powerpc64le = powernv;
|
||||
powerpc64le-musl = musl-power;
|
||||
})
|
||||
|
|
|
@ -19,7 +19,8 @@ in with pkgs; rec {
|
|||
tarMinimal = gnutar.override { acl = null; };
|
||||
|
||||
busyboxMinimal = busybox.override {
|
||||
useMusl = !stdenv.targetPlatform.isRiscV;
|
||||
useMusl = with stdenv.targetPlatform; !isRiscV &&
|
||||
(system == "powerpc64-linux" -> parsed.abi.name != "elfv1");
|
||||
enableStatic = true;
|
||||
enableMinimal = true;
|
||||
extraConfig = ''
|
||||
|
|
Loading…
Reference in a new issue