From a426de1c513c181ead66db1728cfb5e6949e8edd Mon Sep 17 00:00:00 2001 From: spectranator Date: Sat, 12 Apr 2025 22:12:47 +0200 Subject: [PATCH] Optionally use CPM in containerized AppImage build --- AppImage-build-debian-inner.sh | 23 ++++++++++++++++++++--- AppImage-build-debian.sh | 6 +++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/AppImage-build-debian-inner.sh b/AppImage-build-debian-inner.sh index 4bbcaef7e..969e573be 100755 --- a/AppImage-build-debian-inner.sh +++ b/AppImage-build-debian-inner.sh @@ -14,7 +14,20 @@ ulimit -n 50000 # Install dependencies apt -y install cmake ninja-build build-essential autoconf pkg-config locales wget git file mold libtool lsb-release wget software-properties-common gnupg \ - qtbase5-dev qtmultimedia5-dev qtbase5-private-dev glslang-tools libssl-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev libpulse-dev libalsaplayer-dev + qtbase5-dev qtmultimedia5-dev qtbase5-private-dev glslang-tools libssl-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev libpulse-dev libasound2-dev +if ! [ "$BUILD_USE_CPM" = 1 ]; then + apt -y install libfmt-dev libenet-dev liblz4-dev nlohmann-json3-dev zlib1g-dev libopus-dev libsimpleini-dev libstb-dev libzstd-dev libusb-1.0-0-dev libcubeb-dev libcpp-jwt-dev libvulkan-dev gamemode-dev libasound2-dev libglu1-mesa-dev libxext-dev mesa-common-dev libva-dev + + # Install Boost + wget https://archives.boost.io/release/1.88.0/source/boost_1_88_0.tar.bz2 + echo "Extracting Boost sources..." + tar xf boost_1_88_0.tar.bz2 + cd boost_1_88_0 + ./bootstrap.sh + ./b2 install --with-{headers,context} link=static + cd .. + rm -rf boost_1_88_0 boost_1_88_0.tar.bz2 +fi # Install Clang if ! clang-19 --version; then @@ -30,20 +43,24 @@ cd /tmp mkdir torzu-src-upper torzu-src-work torzu-src mount -t overlay overlay -olowerdir=torzu-src-ro,upperdir=torzu-src-upper,workdir=torzu-src-work torzu-src -# Get extra compile options +# Get extra configuration/compilation options EXTRA_COMPILE_FLAGS="" +EXTRA_CMAKE_FLAGS="" if [ "$BUILD_USE_THIN_LTO" = 1 ]; then EXTRA_COMPILE_FLAGS="-flto=thin" fi if [ "$BUILD_USE_FAT_LTO" = 1 ]; then EXTRA_COMPILE_FLAGS="-flto=full" fi +if [ "$BUILD_USE_CPM" = 1 ]; then + EXTRA_CMAKE_FLAGS="-DYUZU_USE_CPM=ON" +fi # Build Torzu cd /tmp mkdir torzu-build cd torzu-build -cmake /tmp/torzu-src -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DYUZU_TESTS=OFF -DENABLE_QT_TRANSLATION=OFF -DSPIRV_WERROR=OFF -DYUZU_USE_CPM=ON -DCMAKE_FIND_LIBRARY_SUFFIXES=".a;.so" -DSPIRV-Headers_SOURCE_DIR=/tmp/torzu-src/externals/SPIRV-Headers -DCMAKE_{C,CXX}_FLAGS="${EXTRA_COMPILE_FLAGS} -fdata-sections -ffunction-sections" -DCMAKE_{EXE,SHARED}_LINKER_FLAGS="-Wl,--gc-sections" +cmake /tmp/torzu-src -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DYUZU_TESTS=OFF -DENABLE_QT_TRANSLATION=OFF -DSPIRV_WERROR=OFF -DCMAKE_FIND_LIBRARY_SUFFIXES=".a;.so" -DSPIRV-Headers_SOURCE_DIR=/tmp/torzu-src/externals/SPIRV-Headers -DCMAKE_{C,CXX}_FLAGS="${EXTRA_COMPILE_FLAGS} -fdata-sections -ffunction-sections" -DCMAKE_{EXE,SHARED}_LINKER_FLAGS="-Wl,--gc-sections" $EXTRA_CMAKE_FLAGS ninja || ( echo "Compilation has failed. Dropping you into a shell so you can inspect the situation. Run 'ninja' to retry and exit shell once compilation has finished successfully." echo "Note that any changes made here will not be reflected to the host environment, but changes made from the host environment will be reflected here." diff --git a/AppImage-build-debian.sh b/AppImage-build-debian.sh index af6bf82bc..21f5e4810 100755 --- a/AppImage-build-debian.sh +++ b/AppImage-build-debian.sh @@ -13,12 +13,16 @@ case $i in export BUILD_USE_FAT_LTO=1 echo "-> Fat link time optimization enabled." ;; + -p|--use-cpm) + export BUILD_USE_CPM=1 + echo "-> Using CPM to download most dependencies." + ;; -k|--keep-rootfs) BUILD_KEEP_ROOTFS=1 echo "-> Not deleting rootfs after successful build." ;; *) - echo "Usage: $0 [--thin-lto/-o] [--fat-lto/-O] [--keep-rootfs/-k]" + echo "Usage: $0 [--thin-lto/-o] [--fat-lto/-O] [--use-cpm/-p] [--keep-rootfs/-k]" exit 1 ;; esac