|
| 1 | +FROM ubuntu:20.04 |
| 2 | + |
| 3 | +RUN apt-get update -qq && \ |
| 4 | + DEBIAN_FRONTEND="noninteractive" apt-get install -qqy --no-install-recommends \ |
| 5 | + git wget bzip2 file unzip libtool pkg-config cmake build-essential \ |
| 6 | + automake yasm gettext autopoint vim-tiny python3 python3-distutils \ |
| 7 | + ninja-build ca-certificates curl less zip && \ |
| 8 | + apt-get clean -y && \ |
| 9 | + rm -rf /var/lib/apt/lists/* |
| 10 | + |
| 11 | +# Manually install a newer version of CMake; this is needed since building |
| 12 | +# LLVM requires CMake 3.20, while Ubuntu 20.04 ships with 3.16.3. If |
| 13 | +# updating to a newer distribution, this can be dropped. |
| 14 | +RUN cd /opt && \ |
| 15 | + curl -LO https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-Linux-$(uname -m).tar.gz && \ |
| 16 | + tar -zxf cmake-*.tar.gz && \ |
| 17 | + rm cmake-*.tar.gz && \ |
| 18 | + mv cmake-* cmake |
| 19 | +ENV PATH=/opt/cmake/bin:$PATH |
| 20 | + |
| 21 | + |
| 22 | +RUN git config --global user.name "LLVM MinGW" && \ |
| 23 | + git config --global user.email root@localhost |
| 24 | + |
| 25 | +WORKDIR /build |
| 26 | + |
| 27 | +ENV TOOLCHAIN_PREFIX=/opt/llvm-mingw |
| 28 | + |
| 29 | +ARG TOOLCHAIN_ARCHS="i686 x86_64 armv7 aarch64" |
| 30 | + |
| 31 | +# Copy prebuilt toolchains for the current architecture. |
| 32 | +# Test executing a binary, to make sure that it works (i.e. it is not built |
| 33 | +# requiring a newer version of glibc or libstdc++ than what is available in |
| 34 | +# this container). |
| 35 | +RUN --mount=type=bind,source=toolchain,target=/toolchain \ |
| 36 | + mkdir -p $TOOLCHAIN_PREFIX && ARCH=$(uname -m) && \ |
| 37 | + tar xf /toolchain/linux-ucrt-$ARCH-toolchain/llvm-mingw-*-$ARCH.tar.xz --strip-components 1 -C $TOOLCHAIN_PREFIX && \ |
| 38 | + ANY_ARCH=$(echo $TOOLCHAIN_ARCHS | awk '{print $1}') && \ |
| 39 | + $TOOLCHAIN_PREFIX/bin/$ANY_ARCH-w64-mingw32-clang --version |
| 40 | + |
| 41 | +ENV PATH=$TOOLCHAIN_PREFIX/bin:$PATH |
0 commit comments