1# These can be passed to nixpkgs as either the `localSystem` or
2# `crossSystem`. They are put here for user convenience, but also used by cross
3# tests and linux cross stdenv building, so handle with care!
4{ lib }:
5let platforms = import ./platforms.nix { inherit lib; }; in
6
7rec {
8 #
9 # Linux
10 #
11
12 sheevaplug = rec {
13 config = "armv5tel-unknown-linux-gnueabi";
14 arch = "armv5tel";
15 float = "soft";
16 platform = platforms.sheevaplug;
17 };
18
19 raspberryPi = rec {
20 config = "armv6l-unknown-linux-gnueabihf";
21 arch = "armv6l";
22 float = "hard";
23 fpu = "vfp";
24 platform = platforms.raspberrypi;
25 };
26
27 armv7l-hf-multiplatform = rec {
28 config = "arm-unknown-linux-gnueabihf";
29 arch = "armv7-a";
30 float = "hard";
31 fpu = "vfpv3-d16";
32 platform = platforms.armv7l-hf-multiplatform;
33 };
34
35 aarch64-multiplatform = rec {
36 config = "aarch64-unknown-linux-gnu";
37 arch = "aarch64";
38 platform = platforms.aarch64-multiplatform;
39 };
40
41 aarch64-android-prebuilt = rec {
42 config = "aarch64-unknown-linux-android";
43 arch = "aarch64";
44 platform = platforms.aarch64-multiplatform;
45 useAndroidPrebuilt = true;
46 };
47
48 scaleway-c1 = armv7l-hf-multiplatform // rec {
49 platform = platforms.scaleway-c1;
50 inherit (platform.gcc) fpu;
51 };
52
53 pogoplug4 = rec {
54 arch = "armv5tel";
55 config = "armv5tel-unknown-linux-gnueabi";
56 float = "soft";
57 platform = platforms.pogoplug4;
58 };
59
60 fuloongminipc = rec {
61 config = "mipsel-unknown-linux-gnu";
62 arch = "mips";
63 float = "hard";
64 platform = platforms.fuloong2f_n32;
65 };
66
67 muslpi = raspberryPi // {
68 config = "armv6l-unknown-linux-musleabihf";
69 };
70
71 aarch64-multiplatform-musl = aarch64-multiplatform // {
72 config = "aarch64-unknown-linux-musl";
73 };
74
75 musl64 = { config = "x86_64-unknown-linux-musl"; };
76 musl32 = { config = "i686-unknown-linux-musl"; };
77
78 riscv = bits: {
79 config = "riscv${bits}-unknown-linux-gnu";
80 platform = platforms.riscv-multiplatform bits;
81 };
82 riscv64 = riscv "64";
83 riscv32 = riscv "32";
84
85
86 #
87 # Darwin
88 #
89
90 iphone64 = {
91 config = "aarch64-apple-darwin14";
92 arch = "arm64";
93 libc = "libSystem";
94 platform = {};
95 };
96
97 iphone32 = {
98 config = "arm-apple-darwin10";
99 arch = "armv7-a";
100 libc = "libSystem";
101 platform = {};
102 };
103
104 #
105 # Windows
106 #
107
108 # 32 bit mingw-w64
109 mingw32 = {
110 config = "i686-pc-mingw32";
111 arch = "x86"; # Irrelevant
112 libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
113 platform = {};
114 };
115
116 # 64 bit mingw-w64
117 mingwW64 = {
118 # That's the triplet they use in the mingw-w64 docs.
119 config = "x86_64-pc-mingw32";
120 arch = "x86_64"; # Irrelevant
121 libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
122 platform = {};
123 };
124}