This can be used e.g. for building Qt without any MSYS installation, and should also work for cmake, if using the mingw makefiles generator.
50 lines
1.5 KiB
Docker
50 lines
1.5 KiB
Docker
# Cross compile an llvm-mingw toolchain for windows.
|
|
#
|
|
# This needs to be built with --build-arg BASE=<image>, where image is the name
|
|
# of a docker image that contains a working llvm-mingw cross compiler
|
|
# from a similar enough version.
|
|
#
|
|
# This builds LLVM and all other build tools that need to run on the target
|
|
# platform, but just copies over the runtime libraries from the existing
|
|
# toolchain in the base docker image.
|
|
|
|
ARG BASE=mstorsjo/llvm-mingw:dev
|
|
FROM $BASE
|
|
|
|
RUN apt-get update -qq && \
|
|
apt-get install -qqy zip && \
|
|
apt-get clean -y && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
ARG CROSS_ARCH=x86_64
|
|
ENV CROSS_TOOLCHAIN_PREFIX=/opt/llvm-mingw-$CROSS_ARCH
|
|
|
|
ENV HOST=$CROSS_ARCH-w64-mingw32
|
|
|
|
ARG FULL_LLVM
|
|
|
|
COPY build-llvm.sh .
|
|
RUN ./build-llvm.sh $CROSS_TOOLCHAIN_PREFIX --host=$HOST
|
|
COPY strip-llvm.sh .
|
|
RUN ./strip-llvm.sh $CROSS_TOOLCHAIN_PREFIX --host=$HOST
|
|
|
|
ARG TOOLCHAIN_ARCHS="i686 x86_64 armv7 aarch64"
|
|
|
|
COPY build-mingw-w64.sh ./
|
|
RUN ./build-mingw-w64.sh $CROSS_TOOLCHAIN_PREFIX --skip-include-triplet-prefix --host=$HOST
|
|
|
|
COPY wrappers/*.sh wrappers/*.c wrappers/*.h ./wrappers/
|
|
COPY install-wrappers.sh .
|
|
RUN ./install-wrappers.sh $CROSS_TOOLCHAIN_PREFIX --host=$HOST
|
|
|
|
COPY prepare-cross-toolchain.sh .
|
|
RUN ./prepare-cross-toolchain.sh $TOOLCHAIN_PREFIX $CROSS_TOOLCHAIN_PREFIX $CROSS_ARCH
|
|
|
|
COPY build-make.sh .
|
|
RUN ./build-make.sh $CROSS_TOOLCHAIN_PREFIX --host=$HOST
|
|
|
|
ARG TAG
|
|
RUN ln -s $CROSS_TOOLCHAIN_PREFIX llvm-mingw && \
|
|
zip -9r /llvm-mingw-$TAG$CROSS_ARCH.zip llvm-mingw && \
|
|
ls -lh /llvm-mingw-$TAG$CROSS_ARCH.zip
|