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 \
clang19 \
clang20 \
lld \
git \
xz \
gzip \

View File

@ -2,11 +2,6 @@
set -ex
# if [ -n "$TARGETPLATFORM" ]; then
# export CC="xx-cc"
# export CXX="xx-c++"
# fi
cd "$HOME"
mkdir 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
ninja
ccache -s
ninja install
cd "$HOME"

View File

@ -57,7 +57,7 @@ fi
export COMMON_CFLAGS="-ffunction-sections -fdata-sections -fmerge-all-constants"
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"
BZIP2_TARBALL="bzip2-${BZIP2_VERSION}.tar.gz"
@ -91,6 +91,15 @@ PARALLEL_HASHMAP_TARBALL="parallel-hashmap-${PARALLEL_HASHMAP_VERSION}.tar.gz"
use_lib() {
local lib="$1"
case "$CARCH" in
ppc64le|s390x|arm)
case "$lib" in
libunwind|libdwarf|cpptrace)
return 1
;;
esac
;;
esac
if [[ ",$PKGS," == *",$lib,"* ]]; then
return 0
else
@ -226,6 +235,7 @@ for target_arch in ${TARGET_ARCH_STR//,/ }; do
BOOST_CONTEXT_ARCH="$CARCH"
case "$CARCH" in
aarch64*) BOOST_CONTEXT_ARCH="arm64" ;;
ppc64*) BOOST_CONTEXT_ARCH="ppc64" ;;
esac
export TARGET="${CARCH}-alpine-linux-musl"
@ -241,7 +251,7 @@ for target_arch in ${TARGET_ARCH_STR//,/ }; do
endian="little"
case "$CARCH" in
powerpc|powerpc64|s390|s390x)
powerpc|powerpc64)
endian="big"
;;
esac
@ -266,11 +276,22 @@ EOF
export WORKROOT="$HOME/pkgs"
# COMPILERS="clang clang-lto 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
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"
fi
;;
esac
INSTALL_ROOT="/opt/static-libs"
@ -288,6 +309,17 @@ EOF
export PERF_CXXFLAGS="$TARGET_FLAGS $COMMON_CXXFLAGS -isystem $INSTALL_DIR/include"
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
clang*)
export CC="$TARGET-clang"
@ -385,6 +417,7 @@ EOF
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_LZMA=OFF -DBOOST_IOSTREAMS_ENABLE_ZSTD=OFF \
-DBOOST_CHARCONV_QUADMATH_FOUND_EXITCODE=0 \
-DBOOST_EXCLUDE_LIBRARIES=stacktrace ${BOOST_CMAKE_ARGS} \
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" ${CMAKE_ARGS}
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"
TARGET="arm-linux-musleabihf"
;;
s390x)
GCC_CONFIGURE_ARGS="--with-arch=z10"
;;
*)
GCC_CONFIGURE_ARGS=""
;;