about summary refs log tree commit diff
path: root/src/ci/docker/thumb-none/Dockerfile
blob: f3ee60c296f8d6c9c2fd34c1c6e3ab2ed7fa32fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
FROM ubuntu:16.04

RUN apt-get update && apt-get install -y --no-install-recommends \
  g++ \
  make \
  file \
  curl \
  ca-certificates \
  python2.7 \
  git \
  cmake \
  sudo \
  xz-utils \
  zlib1g-dev \
  g++-arm-linux-gnueabi \
  g++-arm-linux-gnueabihf \
  g++-aarch64-linux-gnu \
  gcc-sparc64-linux-gnu \
  libc6-dev-sparc64-cross \
  bzip2 \
  patch \
  libssl-dev \
  pkg-config \
  gcc-arm-none-eabi \
  libnewlib-arm-none-eabi

WORKDIR /build

COPY dist-various-1/build-rumprun.sh /build
RUN ./build-rumprun.sh

COPY dist-various-1/install-x86_64-redox.sh /build
RUN ./install-x86_64-redox.sh

COPY dist-various-1/install-mips-musl.sh /build
RUN ./install-mips-musl.sh

COPY dist-various-1/install-mipsel-musl.sh /build
RUN ./install-mipsel-musl.sh

# Suppress some warnings in the openwrt toolchains we downloaded
ENV STAGING_DIR=/tmp

COPY scripts/musl.sh /build
RUN env \
    CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv5te -marm -mfloat-abi=soft" \
    CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv5te -marm -mfloat-abi=soft" \
    bash musl.sh armv5te && \
    env \
    CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv6 -marm" \
    CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \
    bash musl.sh arm && \
    env \
    CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm" \
    CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm" \
    bash musl.sh armhf && \
    env \
    CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv7-a" \
    CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv7-a" \
    bash musl.sh armv7 && \
    env \
    CC=aarch64-linux-gnu-gcc \
    CXX=aarch64-linux-gnu-g++ \
    bash musl.sh aarch64 && \
    env \
    CC=mips-openwrt-linux-gcc \
    CXX=mips-openwrt-linux-g++ \
    bash musl.sh mips && \
    env \
    CC=mipsel-openwrt-linux-gcc \
    CXX=mipsel-openwrt-linux-g++ \
    bash musl.sh mipsel && \
    rm -rf /build/*

# FIXME(mozilla/sccache#235) this shouldn't be necessary but is currently
# necessary to disambiguate the mips compiler with the mipsel compiler. We want
# to give these two wrapper scripts (currently identical ones) different hashes
# to ensure that sccache understands that they're different compilers.
RUN \
  echo "# a" >> /usr/local/mips-linux-musl/bin/mips-openwrt-linux-musl-wrapper.sh && \
  echo "# b" >> /usr/local/mipsel-linux-musl/bin/mipsel-openwrt-linux-musl-wrapper.sh

# ENV TARGETS=asmjs-unknown-emscripten
# ENV TARGETS=$TARGETS,wasm32-unknown-emscripten
# ENV TARGETS=$TARGETS,x86_64-rumprun-netbsd
# ENV TARGETS=$TARGETS,mips-unknown-linux-musl
# ENV TARGETS=$TARGETS,mipsel-unknown-linux-musl
# ENV TARGETS=$TARGETS,arm-unknown-linux-musleabi
# ENV TARGETS=$TARGETS,arm-unknown-linux-musleabihf
# ENV TARGETS=$TARGETS,armv5te-unknown-linux-gnueabi
# ENV TARGETS=$TARGETS,armv5te-unknown-linux-musleabi
# ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabihf
# ENV TARGETS=$TARGETS,aarch64-unknown-linux-musl
# ENV TARGETS=$TARGETS,sparc64-unknown-linux-gnu
# ENV TARGETS=$TARGETS,x86_64-unknown-redox
# ENV TARGETS=$TARGETS,thumbv6m-none-eabi
# ENV TARGETS=$TARGETS,thumbv7m-none-eabi
# ENV TARGETS=$TARGETS,thumbv7em-none-eabi
# ENV TARGETS=$TARGETS,thumbv7em-none-eabihf

ENV TARGETS=thumbv7m-none-eabi

# FIXME: remove armv5te vars after https://github.com/alexcrichton/cc-rs/issues/271
#        get fixed and cc update
ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
    CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
    CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
    CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \
    CC_armv5te_unknown_linux_gnueabi=arm-linux-gnueabi-gcc \
    CFLAGS_armv5te_unknown_linux_gnueabi="-march=armv5te -marm -mfloat-abi=soft" \
    CC_armv5te_unknown_linux_musleabi=arm-linux-gnueabi-gcc \
    CFLAGS_armv5te_unknown_linux_musleabi="-march=armv5te -marm -mfloat-abi=soft"

ENV RUST_CONFIGURE_ARGS \
      --musl-root-armv5te=/musl-armv5te \
      --musl-root-arm=/musl-arm \
      --musl-root-armhf=/musl-armhf \
      --musl-root-armv7=/musl-armv7 \
      --musl-root-aarch64=/musl-aarch64 \
      --musl-root-mips=/musl-mips \
      --musl-root-mipsel=/musl-mipsel \
      --disable-docs

ENV SCRIPT python2.7 ../x.py test --target $TARGETS src/test/run-make

# sccache
COPY scripts/sccache.sh /scripts/
RUN sh /scripts/sccache.sh