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
6 platforms = import ./platforms.nix { inherit lib; };
7
8 riscv = bits: {
9 config = "riscv${bits}-unknown-linux-gnu";
10 platform = platforms.riscv-multiplatform bits;
11 };
12in
13
14rec {
15 #
16 # Linux
17 #
18 powernv = {
19 config = "powerpc64le-unknown-linux-gnu";
20 platform = platforms.powernv;
21 };
22 musl-power = {
23 config = "powerpc64le-unknown-linux-musl";
24 platform = platforms.powernv;
25 };
26
27 sheevaplug = rec {
28 config = "armv5tel-unknown-linux-gnueabi";
29 platform = platforms.sheevaplug;
30 };
31
32 raspberryPi = rec {
33 config = "armv6l-unknown-linux-gnueabihf";
34 platform = platforms.raspberrypi;
35 };
36
37 armv7l-hf-multiplatform = rec {
38 config = "armv7l-unknown-linux-gnueabihf";
39 platform = platforms.armv7l-hf-multiplatform;
40 };
41
42 aarch64-multiplatform = rec {
43 config = "aarch64-unknown-linux-gnu";
44 platform = platforms.aarch64-multiplatform;
45 };
46
47 armv7a-android-prebuilt = rec {
48 config = "armv7a-unknown-linux-androideabi";
49 sdkVer = "24";
50 ndkVer = "18b";
51 platform = platforms.armv7a-android;
52 useAndroidPrebuilt = true;
53 };
54
55 aarch64-android-prebuilt = rec {
56 config = "aarch64-unknown-linux-android";
57 sdkVer = "24";
58 ndkVer = "18b";
59 platform = platforms.aarch64-multiplatform;
60 useAndroidPrebuilt = true;
61 };
62
63 scaleway-c1 = armv7l-hf-multiplatform // rec {
64 platform = platforms.scaleway-c1;
65 inherit (platform.gcc) fpu;
66 };
67
68 pogoplug4 = rec {
69 config = "armv5tel-unknown-linux-gnueabi";
70 platform = platforms.pogoplug4;
71 };
72
73 ben-nanonote = rec {
74 config = "mipsel-unknown-linux-uclibc";
75 platform = platforms.ben_nanonote;
76 };
77
78 fuloongminipc = rec {
79 config = "mipsel-unknown-linux-gnu";
80 platform = platforms.fuloong2f_n32;
81 };
82
83 muslpi = raspberryPi // {
84 config = "armv6l-unknown-linux-musleabihf";
85 };
86
87 aarch64-multiplatform-musl = aarch64-multiplatform // {
88 config = "aarch64-unknown-linux-musl";
89 };
90
91 musl64 = { config = "x86_64-unknown-linux-musl"; };
92 musl32 = { config = "i686-unknown-linux-musl"; };
93
94 riscv64 = riscv "64";
95 riscv32 = riscv "32";
96
97 avr = {
98 config = "avr";
99 };
100
101 arm-embedded = {
102 config = "arm-none-eabi";
103 libc = "newlib";
104 };
105 armhf-embedded = {
106 config = "arm-none-eabihf";
107 libc = "newlib";
108 };
109
110 aarch64-embedded = {
111 config = "aarch64-none-elf";
112 libc = "newlib";
113 };
114
115 aarch64be-embedded = {
116 config = "aarch64_be-none-elf";
117 libc = "newlib";
118 };
119
120 ppc-embedded = {
121 config = "powerpc-none-eabi";
122 libc = "newlib";
123 };
124
125 ppcle-embedded = {
126 config = "powerpcle-none-eabi";
127 libc = "newlib";
128 };
129
130 alpha-embedded = {
131 config = "alpha-elf";
132 libc = "newlib";
133 };
134
135 i686-embedded = {
136 config = "i686-elf";
137 libc = "newlib";
138 };
139
140 x86_64-embedded = {
141 config = "x86_64-elf";
142 libc = "newlib";
143 };
144
145 #
146 # Darwin
147 #
148
149 iphone64 = {
150 config = "aarch64-apple-ios";
151 # config = "aarch64-apple-darwin14";
152 sdkVer = "10.2";
153 xcodeVer = "8.2";
154 xcodePlatform = "iPhoneOS";
155 useiOSPrebuilt = true;
156 platform = {};
157 };
158
159 iphone32 = {
160 config = "armv7a-apple-ios";
161 # config = "arm-apple-darwin10";
162 sdkVer = "10.2";
163 xcodeVer = "8.2";
164 xcodePlatform = "iPhoneOS";
165 useiOSPrebuilt = true;
166 platform = {};
167 };
168
169 iphone64-simulator = {
170 config = "x86_64-apple-ios";
171 # config = "x86_64-apple-darwin14";
172 sdkVer = "10.2";
173 xcodeVer = "8.2";
174 xcodePlatform = "iPhoneSimulator";
175 useiOSPrebuilt = true;
176 platform = {};
177 };
178
179 iphone32-simulator = {
180 config = "i686-apple-ios";
181 # config = "i386-apple-darwin11";
182 sdkVer = "10.2";
183 xcodeVer = "8.2";
184 xcodePlatform = "iPhoneSimulator";
185 useiOSPrebuilt = true;
186 platform = {};
187 };
188
189 #
190 # Windows
191 #
192
193 # 32 bit mingw-w64
194 mingw32 = {
195 config = "i686-pc-mingw32";
196 libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
197 platform = {};
198 };
199
200 # 64 bit mingw-w64
201 mingwW64 = {
202 # That's the triplet they use in the mingw-w64 docs.
203 config = "x86_64-pc-mingw32";
204 libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
205 platform = {};
206 };
207
208 # Ghcjs
209 ghcjs = {
210 config = "js-unknown-ghcjs";
211 platform = {};
212 };
213}