build: try building a gcc-static binary

This commit is contained in:
Marcus Holland-Moritz 2024-01-21 08:18:12 +01:00
parent f98874e714
commit e0bcadd02c
4 changed files with 65 additions and 31 deletions

View File

@ -32,12 +32,14 @@ esac
case "-$BUILD_TYPE-" in
*-gcc-*)
export CC=gcc-13 CXX=g++-13
export COMPILER=gcc
;;
*-oldgcc-*)
export CC=gcc-12 CXX=g++-12
;;
*-clang-*)
export CC=clang-17 CXX=clang++-17
export COMPILER=clang
;;
*-oldclang-*)
export CC=clang-16 CXX=clang++-16
@ -85,7 +87,7 @@ fi
if [[ "-$BUILD_TYPE-" == *-static-* ]]; then
CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_DO_NOT_USE=1"
CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_EXTRA_PREFIX=/opt/static-libs"
CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_EXTRA_PREFIX=/opt/static-libs/$COMPILER"
else
CMAKE_ARGS="${CMAKE_ARGS} -DWITH_BENCHMARKS=1"
fi
@ -115,7 +117,8 @@ if [[ "-$BUILD_TYPE-" == *-coverage-* ]]; then
fi
if [[ "-$BUILD_TYPE-" == *-static-* ]]; then
if [[ "-$BUILD_TYPE-" == *-release-* ]]; then
# in the clang-release-static case, we also try to build from the source tarball
if [[ "-$BUILD_TYPE-" == *-release-* ]] && [[ "-$BUILD_TYPE-" == *-clang-* ]]; then
$BUILD_TOOL package_source
if [[ "$BUILD_ARCH" == "amd64" ]]; then

View File

@ -10,11 +10,9 @@ FILE_VERSION=5.45
FILE_SHA512=12611a59ff766c22a55db4b4a9f80f95a0a2e916a1d8593612c6ead32c247102a8fdc23693c6bf81bda9b604d951a62c0051e91580b1b79e190a3504c0efc20a
LIBARCHIVE_VERSION=3.7.2
FLAC_VERSION=1.4.3
LIBUNWIND_VERSION=1.7.2
# BENCHMARK_VERSION=1.8.2
export CC=clang-17
export CXX=clang++-17
RETRY=0
while true; do
rm -f file-${FILE_VERSION}.tar.gz
@ -31,36 +29,63 @@ done
wget https://github.com/libarchive/libarchive/releases/download/v${LIBARCHIVE_VERSION}/libarchive-${LIBARCHIVE_VERSION}.tar.xz
wget https://github.com/xiph/flac/releases/download/${FLAC_VERSION}/flac-${FLAC_VERSION}.tar.xz
wget https://github.com/libunwind/libunwind/releases/download/v${LIBUNWIND_VERSION}/libunwind-${LIBUNWIND_VERSION}.tar.gz
# wget https://github.com/google/benchmark/archive/refs/tags/v${BENCHMARK_VERSION}.tar.gz
tar xf libarchive-${LIBARCHIVE_VERSION}.tar.xz
cd libarchive-${LIBARCHIVE_VERSION}
./configure --prefix=/opt/static-libs --without-iconv --without-xml2 --without-expat
make -j$(nproc)
make install
for COMPILER in clang gcc; do
if [[ "$COMPILER" == "clang" ]]; then
export CC=clang-17
export CXX=clang++-17
elif [[ "$COMPILER" == "gcc" ]]; then
export CC=gcc-13
export CXX=g++-13
else
echo "Unknown compiler: $COMPILER"
exit 1
fi
cd "$HOME/pkgs"
tar xf file-${FILE_VERSION}.tar.gz
cd file-${FILE_VERSION}
./configure --prefix=/opt/static-libs --enable-static=yes --enable-shared=no
make -j$(nproc)
make install
cd "$HOME/pkgs"
mkdir $COMPILER
cd $COMPILER
cd "$HOME/pkgs"
tar xf flac-${FLAC_VERSION}.tar.xz
cd flac-${FLAC_VERSION}
./configure --prefix=/opt/static-libs --enable-static=yes --enable-shared=no --disable-doxygen-docs --disable-ogg --disable-programs --disable-examples
make -j$(nproc)
make install
INSTALL_DIR=/opt/static-libs/$COMPILER
# cd "$HOME/pkgs"
# tar xf v${BENCHMARK_VERSION}.tar.gz
# cd benchmark-${BENCHMARK_VERSION}
# mkdir build
# cd build
# cmake .. -DBENCHMARK_DOWNLOAD_DEPENDENCIES=1 -DCMAKE_INSTALL_PREFIX=/opt/static-libs
# make -j$(nproc)
# make install
tar xf ../libarchive-${LIBARCHIVE_VERSION}.tar.xz
cd libarchive-${LIBARCHIVE_VERSION}
./configure --prefix="$INSTALL_DIR" --without-iconv --without-xml2 --without-expat
make -j$(nproc)
make install
cd "$HOME/pkgs/$COMPILER"
tar xf ../file-${FILE_VERSION}.tar.gz
cd file-${FILE_VERSION}
./configure --prefix="$INSTALL_DIR" --enable-static=yes --enable-shared=no
make -j$(nproc)
make install
cd "$HOME/pkgs/$COMPILER"
tar xf ../flac-${FLAC_VERSION}.tar.xz
cd flac-${FLAC_VERSION}
./configure --prefix="$INSTALL_DIR" --enable-static=yes --enable-shared=no --disable-doxygen-docs --disable-ogg --disable-programs --disable-examples
make -j$(nproc)
make install
cd "$HOME/pkgs/$COMPILER"
tar xf ../libunwind-${LIBUNWIND_VERSION}.tar.gz
cd libunwind-${LIBUNWIND_VERSION}
./configure --prefix="$INSTALL_DIR"
make -j$(nproc)
make install
# cd "$HOME/pkgs"
# tar xf v${BENCHMARK_VERSION}.tar.gz
# cd benchmark-${BENCHMARK_VERSION}
# mkdir build
# cd build
# cmake .. -DBENCHMARK_DOWNLOAD_DEPENDENCIES=1 -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR"
# make -j$(nproc)
# make install
done
cd "$HOME"
rm -rf pkgs

View File

@ -105,6 +105,7 @@ jobs:
- gcc-release-ninja
- oldgcc-debug-make
- clang-release-ninja
- gcc-release-ninja-static
- clang-release-ninja-static
- clang-reldbg-ninja-static
- clang-debug-ninja-static

View File

@ -975,7 +975,7 @@ if(STATIC_BUILD_DO_NOT_USE)
import_static_lib(static_libflac "libFLAC++.a")
set_target_properties(static_libunwind PROPERTIES INTERFACE_LINK_LIBRARIES
PkgConfig::LIBLZMA)
"${LIBLZMA_LIBRARIES};static_libz")
set_target_properties(static_libglog PROPERTIES INTERFACE_LINK_LIBRARIES
static_libgflags)
set_target_properties(static_librt PROPERTIES INTERFACE_LINK_LIBRARIES
@ -1091,6 +1091,11 @@ endif()
if(PRJ_VERSION_FULL)
set(DWARFS_ARTIFACT_ID "${PRJ_VERSION_FULL}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(DWARFS_ARTIFACT_ID "${DWARFS_ARTIFACT_ID}-gcc")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(DWARFS_ARTIFACT_ID "${DWARFS_ARTIFACT_ID}-clang")
endif()
if(DWARFS_OPTIMIZE)
set(DWARFS_ARTIFACT_ID "${DWARFS_ARTIFACT_ID}-O${DWARFS_OPTIMIZE}")
endif()