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 powernv = {
12 config = "powerpc64le-unknown-linux-gnu";
13 platform = platforms.powernv;
14 };
15 musl-power = {
16 config = "powerpc64le-unknown-linux-musl";
17 platform = platforms.powernv;
18 };
19
20 sheevaplug = rec {
21 config = "armv5tel-unknown-linux-gnueabi";
22 platform = platforms.sheevaplug;
23 };
24
25 raspberryPi = rec {
26 config = "armv6l-unknown-linux-gnueabihf";
27 platform = platforms.raspberrypi;
28 };
29
30 armv7l-hf-multiplatform = rec {
31 config = "armv7a-unknown-linux-gnueabihf";
32 platform = platforms.armv7l-hf-multiplatform;
33 };
34
35 aarch64-multiplatform = rec {
36 config = "aarch64-unknown-linux-gnu";
37 platform = platforms.aarch64-multiplatform;
38 };
39
40 armv5te-android-prebuilt = rec {
41 config = "armv5tel-unknown-linux-androideabi";
42 sdkVer = "21";
43 ndkVer = "10e";
44 platform = platforms.armv5te-android;
45 useAndroidPrebuilt = true;
46 };
47
48 armv7a-android-prebuilt = rec {
49 config = "armv7a-unknown-linux-androideabi";
50 sdkVer = "24";
51 ndkVer = "17";
52 platform = platforms.armv7a-android;
53 useAndroidPrebuilt = true;
54 };
55
56 aarch64-android-prebuilt = rec {
57 config = "aarch64-unknown-linux-android";
58 sdkVer = "24";
59 ndkVer = "17";
60 platform = platforms.aarch64-multiplatform;
61 useAndroidPrebuilt = true;
62 };
63
64 scaleway-c1 = armv7l-hf-multiplatform // rec {
65 platform = platforms.scaleway-c1;
66 inherit (platform.gcc) fpu;
67 };
68
69 pogoplug4 = rec {
70 config = "armv5tel-unknown-linux-gnueabi";
71 platform = platforms.pogoplug4;
72 };
73
74 ben-nanonote = rec {
75 config = "mipsel-unknown-linux-uclibc";
76 platform = platforms.ben_nanonote;
77 };
78
79 fuloongminipc = rec {
80 config = "mipsel-unknown-linux-gnu";
81 platform = platforms.fuloong2f_n32;
82 };
83
84 muslpi = raspberryPi // {
85 config = "armv6l-unknown-linux-musleabihf";
86 };
87
88 aarch64-multiplatform-musl = aarch64-multiplatform // {
89 config = "aarch64-unknown-linux-musl";
90 };
91
92 musl64 = { config = "x86_64-unknown-linux-musl"; };
93 musl32 = { config = "i686-unknown-linux-musl"; };
94
95 riscv = bits: {
96 config = "riscv${bits}-unknown-linux-gnu";
97 platform = platforms.riscv-multiplatform bits;
98 };
99 riscv64 = riscv "64";
100 riscv32 = riscv "32";
101
102
103 #
104 # Darwin
105 #
106
107 iphone64 = {
108 config = "aarch64-apple-ios";
109 # config = "aarch64-apple-darwin14";
110 sdkVer = "10.2";
111 xcodeVer = "8.2";
112 xcodePlatform = "iPhoneOS";
113 useiOSPrebuilt = true;
114 platform = {};
115 };
116
117 iphone32 = {
118 config = "armv7a-apple-ios";
119 # config = "arm-apple-darwin10";
120 sdkVer = "10.2";
121 xcodeVer = "8.2";
122 xcodePlatform = "iPhoneOS";
123 useiOSPrebuilt = true;
124 platform = {};
125 };
126
127 iphone64-simulator = {
128 config = "x86_64-apple-ios";
129 # config = "x86_64-apple-darwin14";
130 sdkVer = "10.2";
131 xcodeVer = "8.2";
132 xcodePlatform = "iPhoneSimulator";
133 useiOSPrebuilt = true;
134 platform = {};
135 };
136
137 iphone32-simulator = {
138 config = "i686-apple-ios";
139 # config = "i386-apple-darwin11";
140 sdkVer = "10.2";
141 xcodeVer = "8.2";
142 xcodePlatform = "iPhoneSimulator";
143 useiOSPrebuilt = true;
144 platform = {};
145 };
146
147 #
148 # Windows
149 #
150
151 # 32 bit mingw-w64
152 mingw32 = {
153 config = "i686-pc-mingw32";
154 libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
155 platform = {};
156 };
157
158 # 64 bit mingw-w64
159 mingwW64 = {
160 # That's the triplet they use in the mingw-w64 docs.
161 config = "x86_64-pc-mingw32";
162 libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
163 platform = {};
164 };
165}