Build a mingw32-make.exe when cross building toolchains

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.
This commit is contained in:
Martin Storsjö committed 2019-12-23 19:47:11 +02:00
1 parent 57c4f47db3
commit c8d181fa90
3 files changed
+61

No files matched your search

+3
View File
@@ -40,6 +40,9 @@ RUN ./install-wrappers.sh $CROSS_TOOLCHAIN_PREFIX --host=$HOST
COPY prepare-cross-toolchain.sh . COPY prepare-cross-toolchain.sh .
RUN ./prepare-cross-toolchain.sh $TOOLCHAIN_PREFIX $CROSS_TOOLCHAIN_PREFIX $CROSS_ARCH 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 ARG TAG
RUN ln -s $CROSS_TOOLCHAIN_PREFIX llvm-mingw && \ RUN ln -s $CROSS_TOOLCHAIN_PREFIX llvm-mingw && \
zip -9r /llvm-mingw-$TAG$CROSS_ARCH.zip llvm-mingw && \ zip -9r /llvm-mingw-$TAG$CROSS_ARCH.zip llvm-mingw && \
+1
View File
@@ -18,3 +18,4 @@ HOST=$CROSS_ARCH-w64-mingw32
./build-mingw-w64.sh $PREFIX --skip-include-triplet-prefix --host=$HOST ./build-mingw-w64.sh $PREFIX --skip-include-triplet-prefix --host=$HOST
./install-wrappers.sh $PREFIX --host=$HOST ./install-wrappers.sh $PREFIX --host=$HOST
./prepare-cross-toolchain.sh $NATIVE $PREFIX $CROSS_ARCH ./prepare-cross-toolchain.sh $NATIVE $PREFIX $CROSS_ARCH
./build-make.sh $PREFIX --host=$HOST
Executable
+57
View File
@@ -0,0 +1,57 @@
#!/bin/sh
set -e
unset HOST
: ${MAKE_VERSION:=4.2.1}
while [ $# -gt 0 ]; do
case "$1" in
--host=*)
HOST="${1#*=}"
;;
*)
PREFIX="$1"
;;
esac
shift
done
if [ -z "$PREFIX" ]; then
echo $0 [--host=<triple>] dest
exit 1
fi
mkdir -p "$PREFIX"
PREFIX="$(cd "$PREFIX" && pwd)"
: ${CORES:=$(nproc 2>/dev/null)}
: ${CORES:=$(sysctl -n hw.ncpu 2>/dev/null)}
: ${CORES:=4}
: ${ARCHS:=${TOOLCHAIN_ARCHS-i686 x86_64 armv7 aarch64}}
download() {
if [ -n "$(which wget)" ]; then
wget "$1"
else
curl -LO "$1"
fi
}
if [ ! -d make-$MAKE_VERSION ]; then
download https://ftp.gnu.org/gnu/make/make-$MAKE_VERSION.tar.bz2
tar -jxf make-$MAKE_VERSION.tar.bz2
fi
cd make-$MAKE_VERSION
if [ -n "$HOST" ]; then
CONFIGFLAGS="$CONFIGFLAGS --host=$HOST"
CROSS_NAME=-$HOST
fi
mkdir -p build$CROSS_NAME
cd build$CROSS_NAME
../configure --prefix="$PREFIX" $CONFIGFLAGS --program-prefix=mingw32- --enable-job-server LDFLAGS="-Wl,-s"
make -j$CORES
make install-binPROGRAMS