]>
Commit | Line | Data |
---|---|---|
5869c6ff | 1 | FROM ubuntu:20.04 |
476ff2be | 2 | |
5869c6ff | 3 | RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ |
476ff2be | 4 | g++ \ |
dfeec247 XL |
5 | automake \ |
6 | bison \ | |
7 | bzip2 \ | |
8 | flex \ | |
9 | help2man \ | |
10 | libtool-bin \ | |
11 | texinfo \ | |
12 | unzip \ | |
13 | wget \ | |
14 | xz-utils \ | |
15 | libncurses-dev \ | |
16 | gawk \ | |
476ff2be | 17 | make \ |
1b1a35ee | 18 | ninja-build \ |
476ff2be SL |
19 | file \ |
20 | curl \ | |
21 | ca-certificates \ | |
dfeec247 | 22 | python3 \ |
476ff2be SL |
23 | git \ |
24 | cmake \ | |
476ff2be | 25 | sudo \ |
32a655c1 SL |
26 | xz-utils \ |
27 | zlib1g-dev \ | |
28 | g++-arm-linux-gnueabi \ | |
29 | g++-arm-linux-gnueabihf \ | |
ea8adc8c | 30 | g++-aarch64-linux-gnu \ |
e74abb32 XL |
31 | g++-mips64-linux-gnuabi64 \ |
32 | g++-mips64el-linux-gnuabi64 \ | |
5869c6ff | 33 | gcc-arm-none-eabi \ |
8bb4bdeb XL |
34 | gcc-sparc64-linux-gnu \ |
35 | libc6-dev-sparc64-cross \ | |
32a655c1 | 36 | bzip2 \ |
8bb4bdeb XL |
37 | patch \ |
38 | libssl-dev \ | |
83c7162d | 39 | pkg-config \ |
a1dfa0c6 | 40 | libnewlib-arm-none-eabi \ |
0731742a XL |
41 | qemu-system-arm \ |
42 | # software-properties-common for the add-apt-repository command | |
43 | software-properties-common | |
476ff2be | 44 | |
2c00a5a8 | 45 | WORKDIR /build |
476ff2be | 46 | |
f035d41b | 47 | COPY host-x86_64/dist-various-1/install-x86_64-redox.sh /build |
2c00a5a8 | 48 | RUN ./install-x86_64-redox.sh |
476ff2be | 49 | |
f035d41b | 50 | COPY host-x86_64/dist-various-1/install-mips-musl.sh /build |
7cac9316 | 51 | RUN ./install-mips-musl.sh |
476ff2be | 52 | |
f035d41b | 53 | COPY host-x86_64/dist-various-1/install-mipsel-musl.sh /build |
7cac9316 | 54 | RUN ./install-mipsel-musl.sh |
32a655c1 | 55 | |
f035d41b | 56 | COPY host-x86_64/dist-various-1/install-aarch64-none-elf.sh /build |
ba9703b0 XL |
57 | RUN ./install-aarch64-none-elf.sh |
58 | ||
2c00a5a8 XL |
59 | # Suppress some warnings in the openwrt toolchains we downloaded |
60 | ENV STAGING_DIR=/tmp | |
61 | ||
62 | COPY scripts/musl.sh /build | |
63 | RUN env \ | |
83c7162d XL |
64 | CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv5te -marm -mfloat-abi=soft" \ |
65 | CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv5te -marm -mfloat-abi=soft" \ | |
66 | bash musl.sh armv5te && \ | |
67 | env \ | |
2c00a5a8 XL |
68 | CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv6 -marm" \ |
69 | CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \ | |
70 | bash musl.sh arm && \ | |
71 | env \ | |
0731742a XL |
72 | CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm -mfpu=vfp" \ |
73 | CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm -mfpu=vfp" \ | |
2c00a5a8 XL |
74 | bash musl.sh armhf && \ |
75 | env \ | |
76 | CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv7-a" \ | |
77 | CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv7-a" \ | |
416331ca | 78 | bash musl.sh armv7hf && \ |
2c00a5a8 | 79 | env \ |
2c00a5a8 XL |
80 | CC=mips-openwrt-linux-gcc \ |
81 | CXX=mips-openwrt-linux-g++ \ | |
82 | bash musl.sh mips && \ | |
83 | env \ | |
84 | CC=mipsel-openwrt-linux-gcc \ | |
85 | CXX=mipsel-openwrt-linux-g++ \ | |
86 | bash musl.sh mipsel && \ | |
e74abb32 XL |
87 | env \ |
88 | CC=mips64-linux-gnuabi64-gcc \ | |
89 | CXX=mips64-linux-gnuabi64-g++ \ | |
90 | bash musl.sh mips64 && \ | |
91 | env \ | |
92 | CC=mips64el-linux-gnuabi64-gcc \ | |
93 | CXX=mips64el-linux-gnuabi64-g++ \ | |
94 | bash musl.sh mips64el && \ | |
2c00a5a8 | 95 | rm -rf /build/* |
3b2f2976 | 96 | |
83c7162d XL |
97 | # FIXME(mozilla/sccache#235) this shouldn't be necessary but is currently |
98 | # necessary to disambiguate the mips compiler with the mipsel compiler. We want | |
99 | # to give these two wrapper scripts (currently identical ones) different hashes | |
100 | # to ensure that sccache understands that they're different compilers. | |
101 | RUN \ | |
102 | echo "# a" >> /usr/local/mips-linux-musl/bin/mips-openwrt-linux-musl-wrapper.sh && \ | |
103 | echo "# b" >> /usr/local/mipsel-linux-musl/bin/mipsel-openwrt-linux-musl-wrapper.sh | |
104 | ||
8faf50e0 XL |
105 | ENV RUN_MAKE_TARGETS=thumbv6m-none-eabi |
106 | ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7m-none-eabi | |
107 | ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7em-none-eabi | |
108 | ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7em-none-eabihf | |
109 | ||
32a655c1 SL |
110 | ENV TARGETS=asmjs-unknown-emscripten |
111 | ENV TARGETS=$TARGETS,wasm32-unknown-emscripten | |
32a655c1 SL |
112 | ENV TARGETS=$TARGETS,mips-unknown-linux-musl |
113 | ENV TARGETS=$TARGETS,mipsel-unknown-linux-musl | |
e74abb32 XL |
114 | ENV TARGETS=$TARGETS,mips64-unknown-linux-muslabi64 |
115 | ENV TARGETS=$TARGETS,mips64el-unknown-linux-muslabi64 | |
32a655c1 SL |
116 | ENV TARGETS=$TARGETS,arm-unknown-linux-musleabi |
117 | ENV TARGETS=$TARGETS,arm-unknown-linux-musleabihf | |
ff7c6d11 | 118 | ENV TARGETS=$TARGETS,armv5te-unknown-linux-gnueabi |
83c7162d | 119 | ENV TARGETS=$TARGETS,armv5te-unknown-linux-musleabi |
32a655c1 | 120 | ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabihf |
ba9703b0 XL |
121 | ENV TARGETS=$TARGETS,aarch64-unknown-none |
122 | ENV TARGETS=$TARGETS,aarch64-unknown-none-softfloat | |
8bb4bdeb | 123 | ENV TARGETS=$TARGETS,sparc64-unknown-linux-gnu |
e1599b0c | 124 | ENV TARGETS=$TARGETS,x86_64-unknown-redox |
83c7162d XL |
125 | ENV TARGETS=$TARGETS,thumbv6m-none-eabi |
126 | ENV TARGETS=$TARGETS,thumbv7m-none-eabi | |
127 | ENV TARGETS=$TARGETS,thumbv7em-none-eabi | |
128 | ENV TARGETS=$TARGETS,thumbv7em-none-eabihf | |
532ac7d7 | 129 | ENV TARGETS=$TARGETS,thumbv8m.base-none-eabi |
0731742a | 130 | ENV TARGETS=$TARGETS,thumbv8m.main-none-eabi |
532ac7d7 | 131 | ENV TARGETS=$TARGETS,thumbv8m.main-none-eabihf |
416331ca | 132 | ENV TARGETS=$TARGETS,riscv32i-unknown-none-elf |
b7449926 XL |
133 | ENV TARGETS=$TARGETS,riscv32imc-unknown-none-elf |
134 | ENV TARGETS=$TARGETS,riscv32imac-unknown-none-elf | |
9fa01778 XL |
135 | ENV TARGETS=$TARGETS,riscv64imac-unknown-none-elf |
136 | ENV TARGETS=$TARGETS,riscv64gc-unknown-none-elf | |
b7449926 XL |
137 | ENV TARGETS=$TARGETS,armebv7r-none-eabi |
138 | ENV TARGETS=$TARGETS,armebv7r-none-eabihf | |
139 | ENV TARGETS=$TARGETS,armv7r-none-eabi | |
140 | ENV TARGETS=$TARGETS,armv7r-none-eabihf | |
0731742a | 141 | ENV TARGETS=$TARGETS,thumbv7neon-unknown-linux-gnueabihf |
dfeec247 | 142 | ENV TARGETS=$TARGETS,armv7a-none-eabi |
476ff2be | 143 | |
60c5eb7d XL |
144 | # riscv targets currently do not need a C compiler, as compiler_builtins |
145 | # doesn't currently have it enabled, and the riscv gcc compiler is not | |
146 | # installed. | |
32a655c1 | 147 | ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \ |
8bb4bdeb | 148 | CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \ |
e74abb32 XL |
149 | CC_mips64el_unknown_linux_muslabi64=mips64el-linux-gnuabi64-gcc \ |
150 | CC_mips64_unknown_linux_muslabi64=mips64-linux-gnuabi64-gcc \ | |
3b2f2976 | 151 | CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \ |
b7449926 | 152 | CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \ |
0731742a XL |
153 | CC_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc \ |
154 | AR_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ar \ | |
60c5eb7d | 155 | CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++ \ |
dfeec247 XL |
156 | CC_armv7a_none_eabi=arm-none-eabi-gcc \ |
157 | CC_armv7a_none_eabihf=arm-none-eabi-gcc \ | |
158 | CFLAGS_armv7a_none_eabi=-march=armv7-a \ | |
159 | CFLAGS_armv7a_none_eabihf=-march=armv7-a+vfpv3 \ | |
ba9703b0 XL |
160 | CC_aarch64_unknown_none_softfloat=aarch64-none-elf-gcc \ |
161 | CFLAGS_aarch64_unknown_none_softfloat=-mstrict-align -march=armv8-a+nofp+nosimd \ | |
162 | CC_aarch64_unknown_none=aarch64-none-elf-gcc \ | |
163 | CFLAGS_aarch64_unknown_none=-mstrict-align -march=armv8-a+fp+simd \ | |
60c5eb7d XL |
164 | CC_riscv32i_unknown_none_elf=false \ |
165 | CC_riscv32imc_unknown_none_elf=false \ | |
166 | CC_riscv32imac_unknown_none_elf=false \ | |
167 | CC_riscv64imac_unknown_none_elf=false \ | |
168 | CC_riscv64gc_unknown_none_elf=false | |
e1599b0c | 169 | |
32a655c1 | 170 | ENV RUST_CONFIGURE_ARGS \ |
83c7162d | 171 | --musl-root-armv5te=/musl-armv5te \ |
2c00a5a8 XL |
172 | --musl-root-arm=/musl-arm \ |
173 | --musl-root-armhf=/musl-armhf \ | |
416331ca | 174 | --musl-root-armv7hf=/musl-armv7hf \ |
2c00a5a8 XL |
175 | --musl-root-mips=/musl-mips \ |
176 | --musl-root-mipsel=/musl-mipsel \ | |
e74abb32 XL |
177 | --musl-root-mips64=/musl-mips64 \ |
178 | --musl-root-mips64el=/musl-mips64el \ | |
0531ce1d | 179 | --disable-docs |
2c00a5a8 | 180 | |
b7449926 | 181 | ENV SCRIPT \ |
1b1a35ee XL |
182 | python3 ../x.py --stage 2 test --host='' --target $RUN_MAKE_TARGETS src/test/run-make && \ |
183 | python3 ../x.py dist --host='' --target $TARGETS | |
7cac9316 XL |
184 | |
185 | # sccache | |
186 | COPY scripts/sccache.sh /scripts/ | |
187 | RUN sh /scripts/sccache.sh |