wip: support more architectures

This commit is contained in:
Marcus Holland-Moritz 2025-07-27 14:59:28 +02:00
parent 08923fb848
commit 007d69f2c6
4 changed files with 44 additions and 13 deletions

View File

@ -26,6 +26,7 @@ RUN qemu_pkgs=""; \
clang18 \ clang18 \
clang19 \ clang19 \
clang20 \ clang20 \
lld \
git \ git \
xz \ xz \
gzip \ gzip \

View File

@ -2,11 +2,6 @@
set -ex set -ex
# if [ -n "$TARGETPLATFORM" ]; then
# export CC="xx-cc"
# export CXX="xx-c++"
# fi
cd "$HOME" cd "$HOME"
mkdir pkgs mkdir pkgs
cd pkgs cd pkgs
@ -23,7 +18,6 @@ export PATH="/usr/lib/ccache/bin:$PATH"
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
ninja ninja
ccache -s
ninja install ninja install
cd "$HOME" cd "$HOME"

View File

@ -57,7 +57,7 @@ fi
export COMMON_CFLAGS="-ffunction-sections -fdata-sections -fmerge-all-constants" export COMMON_CFLAGS="-ffunction-sections -fdata-sections -fmerge-all-constants"
export COMMON_CXXFLAGS="$COMMON_CFLAGS" export COMMON_CXXFLAGS="$COMMON_CFLAGS"
export COMMON_LDFLAGS="-fuse-ld=mold -static-libgcc" export COMMON_LDFLAGS="-static-libgcc"
FILE_TARBALL="file-${FILE_VERSION}.tar.gz" FILE_TARBALL="file-${FILE_VERSION}.tar.gz"
BZIP2_TARBALL="bzip2-${BZIP2_VERSION}.tar.gz" BZIP2_TARBALL="bzip2-${BZIP2_VERSION}.tar.gz"
@ -91,6 +91,15 @@ PARALLEL_HASHMAP_TARBALL="parallel-hashmap-${PARALLEL_HASHMAP_VERSION}.tar.gz"
use_lib() { use_lib() {
local lib="$1" local lib="$1"
case "$CARCH" in
ppc64le|s390x|arm)
case "$lib" in
libunwind|libdwarf|cpptrace)
return 1
;;
esac
;;
esac
if [[ ",$PKGS," == *",$lib,"* ]]; then if [[ ",$PKGS," == *",$lib,"* ]]; then
return 0 return 0
else else
@ -226,6 +235,7 @@ for target_arch in ${TARGET_ARCH_STR//,/ }; do
BOOST_CONTEXT_ARCH="$CARCH" BOOST_CONTEXT_ARCH="$CARCH"
case "$CARCH" in case "$CARCH" in
aarch64*) BOOST_CONTEXT_ARCH="arm64" ;; aarch64*) BOOST_CONTEXT_ARCH="arm64" ;;
ppc64*) BOOST_CONTEXT_ARCH="ppc64" ;;
esac esac
export TARGET="${CARCH}-alpine-linux-musl" export TARGET="${CARCH}-alpine-linux-musl"
@ -241,7 +251,7 @@ for target_arch in ${TARGET_ARCH_STR//,/ }; do
endian="little" endian="little"
case "$CARCH" in case "$CARCH" in
powerpc|powerpc64|s390|s390x) powerpc|powerpc64)
endian="big" endian="big"
;; ;;
esac esac
@ -266,11 +276,22 @@ EOF
export WORKROOT="$HOME/pkgs" export WORKROOT="$HOME/pkgs"
# COMPILERS="clang clang-lto clang-minsize-lto gcc" # COMPILERS="clang clang-lto clang-minsize-lto gcc"
case "$CARCH" in
ppc64le|s390x)
COMPILERS="gcc"
;;
arm)
COMPILERS="clang clang-minsize-lto"
;;
*)
if [[ "$ARCH" == "riscv64" ]]; then
# This is so slow natively, stick to the basics for now
COMPILERS="clang"
else
COMPILERS="clang clang-minsize-lto gcc" COMPILERS="clang clang-minsize-lto gcc"
if [[ "$CARCH" != "x86_64" && "$CARCH" != "aarch64" ]]; then
# Let's keep it simple for more exotic architectures
COMPILERS="clang-minsize-lto"
fi fi
;;
esac
INSTALL_ROOT="/opt/static-libs" INSTALL_ROOT="/opt/static-libs"
@ -288,6 +309,17 @@ EOF
export PERF_CXXFLAGS="$TARGET_FLAGS $COMMON_CXXFLAGS -isystem $INSTALL_DIR/include" export PERF_CXXFLAGS="$TARGET_FLAGS $COMMON_CXXFLAGS -isystem $INSTALL_DIR/include"
export COMP_LDFLAGS="$TARGET_FLAGS $COMMON_LDFLAGS -L$INSTALL_DIR/lib" export COMP_LDFLAGS="$TARGET_FLAGS $COMMON_LDFLAGS -L$INSTALL_DIR/lib"
case "$CARCH" in
arm)
export COMP_LDFLAGS="-fuse-ld=lld $COMP_LDFLAGS"
;;
ppc64le|s390x)
;;
*)
export COMP_LDFLAGS="-fuse-ld=mold $COMP_LDFLAGS"
;;
esac
case "$COMPILER" in case "$COMPILER" in
clang*) clang*)
export CC="$TARGET-clang" export CC="$TARGET-clang"
@ -385,6 +417,7 @@ EOF
cmake .. -DBOOST_ENABLE_MPI=OFF -DBOOST_ENABLE_PYTHON=OFF -DBUILD_SHARED_LIBS=OFF \ cmake .. -DBOOST_ENABLE_MPI=OFF -DBOOST_ENABLE_PYTHON=OFF -DBUILD_SHARED_LIBS=OFF \
-DBOOST_IOSTREAMS_ENABLE_ZLIB=OFF -DBOOST_IOSTREAMS_ENABLE_BZIP2=OFF \ -DBOOST_IOSTREAMS_ENABLE_ZLIB=OFF -DBOOST_IOSTREAMS_ENABLE_BZIP2=OFF \
-DBOOST_IOSTREAMS_ENABLE_LZMA=OFF -DBOOST_IOSTREAMS_ENABLE_ZSTD=OFF \ -DBOOST_IOSTREAMS_ENABLE_LZMA=OFF -DBOOST_IOSTREAMS_ENABLE_ZSTD=OFF \
-DBOOST_CHARCONV_QUADMATH_FOUND_EXITCODE=0 \
-DBOOST_EXCLUDE_LIBRARIES=stacktrace ${BOOST_CMAKE_ARGS} \ -DBOOST_EXCLUDE_LIBRARIES=stacktrace ${BOOST_CMAKE_ARGS} \
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" ${CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" ${CMAKE_ARGS}
ninja ninja

View File

@ -112,6 +112,9 @@ for target_arch in ${TARGET_ARCH_STR//,/ }; do
GCC_CONFIGURE_ARGS="--with-arch=armv6 --with-fpu=vfp --with-float=hard" GCC_CONFIGURE_ARGS="--with-arch=armv6 --with-fpu=vfp --with-float=hard"
TARGET="arm-linux-musleabihf" TARGET="arm-linux-musleabihf"
;; ;;
s390x)
GCC_CONFIGURE_ARGS="--with-arch=z10"
;;
*) *)
GCC_CONFIGURE_ARGS="" GCC_CONFIGURE_ARGS=""
;; ;;