forked from mirrors/nixpkgs
66aa02f190
A tricky thing about FreeBSD is that there is no stable ABI across versions. That means that putting in the version as part of the config string is paramount. We have a parsed represenation that separates name versus version to accomplish this. We include FreeBSD versions 12 and 13 to demonstrate how it works.
116 lines
4.3 KiB
Nix
116 lines
4.3 KiB
Nix
{ lib }:
|
|
let
|
|
inherit (lib) lists;
|
|
inherit (lib.systems) parse;
|
|
inherit (lib.systems.inspect) predicates;
|
|
inherit (lib.attrsets) matchAttrs;
|
|
|
|
all = [
|
|
# Cygwin
|
|
"i686-cygwin" "x86_64-cygwin"
|
|
|
|
# Darwin
|
|
"x86_64-darwin" "i686-darwin" "aarch64-darwin" "armv7a-darwin"
|
|
|
|
# FreeBSD
|
|
"i686-freebsd13" "x86_64-freebsd13"
|
|
|
|
# Genode
|
|
"aarch64-genode" "i686-genode" "x86_64-genode"
|
|
|
|
# illumos
|
|
"x86_64-solaris"
|
|
|
|
# JS
|
|
"js-ghcjs"
|
|
|
|
# Linux
|
|
"aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux"
|
|
"armv7l-linux" "i686-linux" "m68k-linux" "microblaze-linux"
|
|
"microblazeel-linux" "mipsel-linux" "mips64el-linux" "powerpc64-linux"
|
|
"powerpc64le-linux" "riscv32-linux" "riscv64-linux" "s390-linux"
|
|
"s390x-linux" "x86_64-linux"
|
|
|
|
# MMIXware
|
|
"mmix-mmixware"
|
|
|
|
# NetBSD
|
|
"aarch64-netbsd" "armv6l-netbsd" "armv7a-netbsd" "armv7l-netbsd"
|
|
"i686-netbsd" "m68k-netbsd" "mipsel-netbsd" "powerpc-netbsd"
|
|
"riscv32-netbsd" "riscv64-netbsd" "x86_64-netbsd"
|
|
|
|
# none
|
|
"aarch64_be-none" "aarch64-none" "arm-none" "armv6l-none" "avr-none" "i686-none"
|
|
"microblaze-none" "microblazeel-none" "msp430-none" "or1k-none" "m68k-none"
|
|
"powerpc-none" "powerpcle-none" "riscv32-none" "riscv64-none" "rx-none"
|
|
"s390-none" "s390x-none" "vc4-none" "x86_64-none"
|
|
|
|
# OpenBSD
|
|
"i686-openbsd" "x86_64-openbsd"
|
|
|
|
# Redox
|
|
"x86_64-redox"
|
|
|
|
# WASI
|
|
"wasm64-wasi" "wasm32-wasi"
|
|
|
|
# Windows
|
|
"x86_64-windows" "i686-windows"
|
|
];
|
|
|
|
allParsed = map parse.mkSystemFromString all;
|
|
|
|
filterDoubles = f: map parse.doubleFromSystem (lists.filter f allParsed);
|
|
|
|
in {
|
|
inherit all;
|
|
|
|
none = [];
|
|
|
|
arm = filterDoubles predicates.isAarch32;
|
|
aarch64 = filterDoubles predicates.isAarch64;
|
|
x86 = filterDoubles predicates.isx86;
|
|
i686 = filterDoubles predicates.isi686;
|
|
x86_64 = filterDoubles predicates.isx86_64;
|
|
microblaze = filterDoubles predicates.isMicroBlaze;
|
|
mips = filterDoubles predicates.isMips;
|
|
mmix = filterDoubles predicates.isMmix;
|
|
riscv = filterDoubles predicates.isRiscV;
|
|
riscv32 = filterDoubles predicates.isRiscV32;
|
|
riscv64 = filterDoubles predicates.isRiscV64;
|
|
rx = filterDoubles predicates.isRx;
|
|
vc4 = filterDoubles predicates.isVc4;
|
|
or1k = filterDoubles predicates.isOr1k;
|
|
m68k = filterDoubles predicates.isM68k;
|
|
s390 = filterDoubles predicates.isS390;
|
|
js = filterDoubles predicates.isJavaScript;
|
|
|
|
bigEndian = filterDoubles predicates.isBigEndian;
|
|
littleEndian = filterDoubles predicates.isLittleEndian;
|
|
|
|
cygwin = filterDoubles predicates.isCygwin;
|
|
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; })
|
|
++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnuabin32; })
|
|
++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnuabi64; })
|
|
++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnuabielfv1; })
|
|
++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnuabielfv2; });
|
|
illumos = filterDoubles predicates.isSunOS;
|
|
linux = filterDoubles predicates.isLinux;
|
|
netbsd = filterDoubles predicates.isNetBSD;
|
|
openbsd = filterDoubles predicates.isOpenBSD;
|
|
unix = filterDoubles predicates.isUnix;
|
|
wasi = filterDoubles predicates.isWasi;
|
|
redox = filterDoubles predicates.isRedox;
|
|
windows = filterDoubles predicates.isWindows;
|
|
genode = filterDoubles predicates.isGenode;
|
|
|
|
embedded = filterDoubles predicates.isNone;
|
|
|
|
mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "armv7a-linux" "aarch64-linux" "powerpc64-linux" "powerpc64le-linux" "aarch64-darwin" "riscv64-linux"];
|
|
}
|