This updates compiler-rt, libunwind, libcxxabi and libcxx to a newer version, matching the compiler. This will be the official, canonical repo in the future. For the non-dev Dockerfile build, this means that all the llvm based subprojects need to be built in one RUN to avoid storing the llvm checkout in the docker layers.
39 lines
1.4 KiB
Docker
39 lines
1.4 KiB
Docker
FROM ubuntu:16.04
|
|
|
|
RUN apt-get update -qq && apt-get install -qqy --no-install-recommends \
|
|
git wget bzip2 file unzip libtool pkg-config cmake build-essential \
|
|
automake yasm gettext autopoint vim python ninja-build subversion \
|
|
ca-certificates && \
|
|
apt-get clean -y && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
RUN git config --global user.name "LLVM MinGW" && \
|
|
git config --global user.email root@localhost
|
|
|
|
WORKDIR /build
|
|
|
|
ENV TOOLCHAIN_PREFIX=/opt/llvm-mingw
|
|
|
|
ARG TOOLCHAIN_ARCHS="i686 x86_64 armv7 aarch64"
|
|
|
|
# Build everything that uses the llvm monorepo. We need to build the mingw runtime before the compiler-rt/libunwind/libcxxabi/libcxx runtimes.
|
|
COPY build-llvm.sh strip-llvm.sh install-wrappers.sh build-mingw-w64.sh build-compiler-rt.sh build-mingw-w64-libraries.sh build-libcxx.sh ./
|
|
COPY wrappers/*.sh wrappers/*.c wrappers/*.h ./wrappers/
|
|
RUN ./build-llvm.sh $TOOLCHAIN_PREFIX && \
|
|
./strip-llvm.sh $TOOLCHAIN_PREFIX && \
|
|
./install-wrappers.sh $TOOLCHAIN_PREFIX && \
|
|
./build-mingw-w64.sh $TOOLCHAIN_PREFIX && \
|
|
./build-compiler-rt.sh $TOOLCHAIN_PREFIX && \
|
|
./build-mingw-w64-libraries.sh $TOOLCHAIN_PREFIX && \
|
|
./build-libcxx.sh $TOOLCHAIN_PREFIX && \
|
|
./build-compiler-rt.sh $TOOLCHAIN_PREFIX --build-sanitizers && \
|
|
rm -rf /build/*
|
|
|
|
# Build libssp
|
|
COPY build-libssp.sh libssp-Makefile ./
|
|
RUN ./build-libssp.sh $TOOLCHAIN_PREFIX && \
|
|
rm -rf /build/*
|
|
|
|
ENV PATH=$TOOLCHAIN_PREFIX/bin:$PATH
|