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