Factorize code for building mingw-w64-crt and compiler-rt for multiple archs

This commit is contained in:
Martin Storsjö authored and Martin Storsjo committed 2017-08-26 23:10:58 +03:00
1 parent 728046d5ea
commit 6417a74596
1 file changed
+43 -79
+43 -79
View File
@@ -110,30 +110,27 @@ ENV NM=llvm-nm
# wrong format, leading to lld later segfaulting when trying to link.
# Force the flag -format gnu to llvm-ar in this step to work around this issue.
RUN cd mingw-w64/mingw-w64-crt && \
mkdir build-arm32 && cd build-arm32 && \
CC=armv7-w64-mingw32-clang \
AR="llvm-ar -format gnu" DLLTOOL=llvm-dlltool ../configure --host=armv7-w64-mingw32 --prefix=$TOOLCHAIN_PREFIX/armv7-w64-mingw32 \
--disable-lib32 --disable-lib64 --enable-libarm32 && \
make -j4 && make install && \
cd .. && \
mkdir build-arm64 && cd build-arm64 && \
CC=aarch64-w64-mingw32-clang \
AR="llvm-ar -format gnu" DLLTOOL=llvm-dlltool ../configure --host=aarch64-w64-mingw32 --prefix=$TOOLCHAIN_PREFIX/aarch64-w64-mingw32 \
--disable-lib32 --disable-lib64 --enable-libarm64 && \
make -j4 && make install && \
cd .. && \
mkdir build-i686 && cd build-i686 && \
CC=i686-w64-mingw32-clang \
AR="llvm-ar -format gnu" DLLTOOL=llvm-dlltool ../configure --host=i686-w64-mingw32 --prefix=$TOOLCHAIN_PREFIX/i686-w64-mingw32 \
--enable-lib32 --disable-lib64 && \
make -j4 && make install && \
cd .. && \
mkdir build-x86_64 && cd build-x86_64 && \
CC=x86_64-w64-mingw32-clang \
AR="llvm-ar -format gnu" DLLTOOL=llvm-dlltool ../configure --host=x86_64-w64-mingw32 --prefix=$TOOLCHAIN_PREFIX/x86_64-w64-mingw32 \
--enable-lib64 --disable-lib32 && \
make -j4 && make install && \
cd ..
for arch in armv7 aarch64 i686 x86_64; do \
mkdir build-$arch && cd build-$arch && \
case $arch in \
armv7) \
FLAGS="--disable-lib32 --disable-lib64 --enable-libarm32" \
;; \
aarch64) \
FLAGS="--disable-lib32 --disable-lib64 --enable-libarm64" \
;; \
i686) \
FLAGS="--enable-lib32 --disable-lib64" \
;; \
x86_64) \
FLAGS="--disable-lib32 --enable-lib64" \
;; \
esac && \
CC=$arch-w64-mingw32-clang \
AR="llvm-ar -format gnu" DLLTOOL=llvm-dlltool ../configure --host=$arch-w64-mingw32 --prefix=$TOOLCHAIN_PREFIX/$arch-w64-mingw32 $FLAGS && \
make -j4 && make install && \
cd ..; \
done
#RUN cp /build/mingw-w64/mingw-w64-libraries/winpthreads/include/* $MINGW_PREFIX/include/
@@ -143,61 +140,28 @@ RUN git clone -b master https://github.com/llvm-mirror/compiler-rt.git && \
# Manually build compiler-rt as a standalone project
RUN cd compiler-rt && \
mkdir build-armv7 && cd build-armv7 && cmake \
-DCMAKE_C_COMPILER=armv7-w64-mingw32-clang \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_AR=$TOOLCHAIN_PREFIX/bin/$AR \
-DCMAKE_RANLIB=$TOOLCHAIN_PREFIX/bin/$RANLIB \
-DCMAKE_C_COMPILER_WORKS=1 \
-DLLVM_CONFIG_PATH=$TOOLCHAIN_PREFIX/bin/llvm-config \
-DCMAKE_C_COMPILER_TARGET=armv7-windows-gnu \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \
../lib/builtins && \
make -j4 && \
mkdir -p /build/prefix/lib/clang/6.0.0/lib/windows && \
cp lib/windows/libclang_rt.builtins-armv7.a /build/prefix/lib/clang/6.0.0/lib/windows/libclang_rt.builtins-arm.a && \
cd .. && \
mkdir build-aarch64 && cd build-aarch64 && cmake \
-DCMAKE_C_COMPILER=aarch64-w64-mingw32-clang \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_AR=$TOOLCHAIN_PREFIX/bin/$AR \
-DCMAKE_RANLIB=$TOOLCHAIN_PREFIX/bin/$RANLIB \
-DCMAKE_C_COMPILER_WORKS=1 \
-DLLVM_CONFIG_PATH=$TOOLCHAIN_PREFIX/bin/llvm-config \
-DCMAKE_C_COMPILER_TARGET=aarch64-windows-gnu \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \
../lib/builtins && \
make -j4 && \
mkdir -p /build/prefix/lib/clang/6.0.0/lib/windows && \
cp lib/windows/libclang_rt.builtins-aarch64.a /build/prefix/lib/clang/6.0.0/lib/windows && \
cd .. && \
mkdir build-i686 && cd build-i686 && cmake \
-DCMAKE_C_COMPILER=i686-w64-mingw32-clang \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_AR=$TOOLCHAIN_PREFIX/bin/$AR \
-DCMAKE_RANLIB=$TOOLCHAIN_PREFIX/bin/$RANLIB \
-DCMAKE_C_COMPILER_WORKS=1 \
-DLLVM_CONFIG_PATH=$TOOLCHAIN_PREFIX/bin/llvm-config \
-DCMAKE_C_COMPILER_TARGET=i686-windows-gnu \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \
../lib/builtins && \
make -j4 && \
mkdir -p /build/prefix/lib/clang/6.0.0/lib/windows && \
cp lib/windows/libclang_rt.builtins-i686.a /build/prefix/lib/clang/6.0.0/lib/windows && \
cd .. && \
mkdir build-x86_64 && cd build-x86_64 && cmake \
-DCMAKE_C_COMPILER=x86_64-w64-mingw32-clang \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_AR=$TOOLCHAIN_PREFIX/bin/$AR \
-DCMAKE_RANLIB=$TOOLCHAIN_PREFIX/bin/$RANLIB \
-DCMAKE_C_COMPILER_WORKS=1 \
-DLLVM_CONFIG_PATH=$TOOLCHAIN_PREFIX/bin/llvm-config \
-DCMAKE_C_COMPILER_TARGET=x86_64-windows-gnu \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \
../lib/builtins && \
make -j4 && \
mkdir -p /build/prefix/lib/clang/6.0.0/lib/windows && \
cp lib/windows/libclang_rt.builtins-x86_64.a /build/prefix/lib/clang/6.0.0/lib/windows
for arch in armv7 aarch64 i686 x86_64; do \
libarchname=$arch && \
case $arch in \
armv7) \
libarchname=arm \
;; \
esac && \
mkdir build-$arch && cd build-$arch && cmake \
-DCMAKE_C_COMPILER=$arch-w64-mingw32-clang \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_AR=$TOOLCHAIN_PREFIX/bin/$AR \
-DCMAKE_RANLIB=$TOOLCHAIN_PREFIX/bin/$RANLIB \
-DCMAKE_C_COMPILER_WORKS=1 \
-DLLVM_CONFIG_PATH=$TOOLCHAIN_PREFIX/bin/llvm-config \
-DCMAKE_C_COMPILER_TARGET=$arch-windows-gnu \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \
../lib/builtins && \
make -j4 && \
mkdir -p /build/prefix/lib/clang/6.0.0/lib/windows && \
cp lib/windows/libclang_rt.builtins-$arch.a /build/prefix/lib/clang/6.0.0/lib/windows/libclang_rt.builtins-$libarchname.a && \
cd ..; \
done
#RUN cd mingw-w64/mingw-w64-libraries && cd winstorecompat && \
# autoreconf -vif && \