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 platform = platforms.sheevaplug;
15 };
16
17 raspberryPi = rec {
18 config = "armv6l-unknown-linux-gnueabihf";
19 platform = platforms.raspberrypi;
20 };
21
22 armv7l-hf-multiplatform = rec {
23 config = "armv7a-unknown-linux-gnueabihf";
24 platform = platforms.armv7l-hf-multiplatform;
25 };
26
27 aarch64-multiplatform = rec {
28 config = "aarch64-unknown-linux-gnu";
29 platform = platforms.aarch64-multiplatform;
30 };
31
32 armv5te-android-prebuilt = rec {
33 config = "armv5tel-unknown-linux-androideabi";
34 sdkVer = "21";
35 platform = platforms.armv5te-android;
36 useAndroidPrebuilt = true;
37 };
38
39 armv7a-android-prebuilt = rec {
40 config = "armv7a-unknown-linux-androideabi";
41 sdkVer = "21";
42 platform = platforms.armv7a-android;
43 useAndroidPrebuilt = true;
44 };
45
46 aarch64-android-prebuilt = rec {
47 config = "aarch64-unknown-linux-android";
48 sdkVer = "21";
49 platform = platforms.aarch64-multiplatform;
50 useAndroidPrebuilt = true;
51 };
52
53 scaleway-c1 = armv7l-hf-multiplatform // rec {
54 platform = platforms.scaleway-c1;
55 inherit (platform.gcc) fpu;
56 };
57
58 pogoplug4 = rec {
59 config = "armv5tel-unknown-linux-gnueabi";
60 platform = platforms.pogoplug4;
61 };
62
63 ben-nanonote = rec {
64 config = "mipsel-unknown-linux-uclibc";
65 platform = platforms.ben_nanonote;
66 };
67
68 fuloongminipc = rec {
69 config = "mipsel-unknown-linux-gnu";
70 platform = platforms.fuloong2f_n32;
71 };
72
73 muslpi = raspberryPi // {
74 config = "armv6l-unknown-linux-musleabihf";
75 };
76
77 aarch64-multiplatform-musl = aarch64-multiplatform // {
78 config = "aarch64-unknown-linux-musl";
79 };
80
81 musl64 = { config = "x86_64-unknown-linux-musl"; };
82 musl32 = { config = "i686-unknown-linux-musl"; };
83
84 riscv = bits: {
85 config = "riscv${bits}-unknown-linux-gnu";
86 platform = platforms.riscv-multiplatform bits;
87 };
88 riscv64 = riscv "64";
89 riscv32 = riscv "32";
90
91
92 #
93 # Darwin
94 #
95
96 iphone64 = {
97 config = "aarch64-apple-darwin14";
98 arch = "arm64";
99 libc = "libSystem";
100 platform = {};
101 };
102
103 iphone32 = {
104 config = "arm-apple-darwin10";
105 arch = "armv7-a";
106 libc = "libSystem";
107 platform = {};
108 };
109
110 #
111 # Windows
112 #
113
114 # 32 bit mingw-w64
115 mingw32 = {
116 config = "i686-pc-mingw32";
117 libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
118 platform = {};
119 };
120
121 # 64 bit mingw-w64
122 mingwW64 = {
123 # That's the triplet they use in the mingw-w64 docs.
124 config = "x86_64-pc-mingw32";
125 libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
126 platform = {};
127 };
128}