1{ lib }:
2let
3 inherit (lib.systems) parse;
4 inherit (lib.systems.inspect) patterns;
5
6 abis = lib.mapAttrs (_: abi: builtins.removeAttrs abi [ "assertions" ]) parse.abis;
7
8in rec {
9 all = [ {} ]; # `{}` matches anything
10 none = [];
11
12 arm = [ patterns.isAarch32 ];
13 aarch64 = [ patterns.isAarch64 ];
14 x86 = [ patterns.isx86 ];
15 i686 = [ patterns.isi686 ];
16 x86_64 = [ patterns.isx86_64 ];
17 mips = [ patterns.isMips ];
18 riscv = [ patterns.isRiscV ];
19
20 cygwin = [ patterns.isCygwin ];
21 darwin = [ patterns.isDarwin ];
22 freebsd = [ patterns.isFreeBSD ];
23 # Should be better, but MinGW is unclear.
24 gnu = [
25 { kernel = parse.kernels.linux; abi = abis.gnu; }
26 { kernel = parse.kernels.linux; abi = abis.gnueabi; }
27 { kernel = parse.kernels.linux; abi = abis.gnueabihf; }
28 ];
29 illumos = [ patterns.isSunOS ];
30 linux = [ patterns.isLinux ];
31 netbsd = [ patterns.isNetBSD ];
32 openbsd = [ patterns.isOpenBSD ];
33 unix = patterns.isUnix; # Actually a list
34 windows = [ patterns.isWindows ];
35
36 inherit (lib.systems.doubles) mesaPlatforms;
37}