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 case "-$BUILD_TYPE-" in
*-gcc-*) *-gcc-*)
export CC=gcc-13 CXX=g++-13 export CC=gcc-13 CXX=g++-13
export COMPILER=gcc
;; ;;
*-oldgcc-*) *-oldgcc-*)
export CC=gcc-12 CXX=g++-12 export CC=gcc-12 CXX=g++-12
;; ;;
*-clang-*) *-clang-*)
export CC=clang-17 CXX=clang++-17 export CC=clang-17 CXX=clang++-17
export COMPILER=clang
;; ;;
*-oldclang-*) *-oldclang-*)
export CC=clang-16 CXX=clang++-16 export CC=clang-16 CXX=clang++-16
@ -85,7 +87,7 @@ fi
if [[ "-$BUILD_TYPE-" == *-static-* ]]; then if [[ "-$BUILD_TYPE-" == *-static-* ]]; then
CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_DO_NOT_USE=1" 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 else
CMAKE_ARGS="${CMAKE_ARGS} -DWITH_BENCHMARKS=1" CMAKE_ARGS="${CMAKE_ARGS} -DWITH_BENCHMARKS=1"
fi fi
@ -115,7 +117,8 @@ if [[ "-$BUILD_TYPE-" == *-coverage-* ]]; then
fi fi
if [[ "-$BUILD_TYPE-" == *-static-* ]]; then 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 $BUILD_TOOL package_source
if [[ "$BUILD_ARCH" == "amd64" ]]; then if [[ "$BUILD_ARCH" == "amd64" ]]; then

View File

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

View File

@ -105,6 +105,7 @@ jobs:
- gcc-release-ninja - gcc-release-ninja
- oldgcc-debug-make - oldgcc-debug-make
- clang-release-ninja - clang-release-ninja
- gcc-release-ninja-static
- clang-release-ninja-static - clang-release-ninja-static
- clang-reldbg-ninja-static - clang-reldbg-ninja-static
- clang-debug-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") import_static_lib(static_libflac "libFLAC++.a")
set_target_properties(static_libunwind PROPERTIES INTERFACE_LINK_LIBRARIES set_target_properties(static_libunwind PROPERTIES INTERFACE_LINK_LIBRARIES
PkgConfig::LIBLZMA) "${LIBLZMA_LIBRARIES};static_libz")
set_target_properties(static_libglog PROPERTIES INTERFACE_LINK_LIBRARIES set_target_properties(static_libglog PROPERTIES INTERFACE_LINK_LIBRARIES
static_libgflags) static_libgflags)
set_target_properties(static_librt PROPERTIES INTERFACE_LINK_LIBRARIES set_target_properties(static_librt PROPERTIES INTERFACE_LINK_LIBRARIES
@ -1091,6 +1091,11 @@ endif()
if(PRJ_VERSION_FULL) if(PRJ_VERSION_FULL)
set(DWARFS_ARTIFACT_ID "${PRJ_VERSION_FULL}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") 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) if(DWARFS_OPTIMIZE)
set(DWARFS_ARTIFACT_ID "${DWARFS_ARTIFACT_ID}-O${DWARFS_OPTIMIZE}") set(DWARFS_ARTIFACT_ID "${DWARFS_ARTIFACT_ID}-O${DWARFS_OPTIMIZE}")
endif() endif()