Path: blob/master/scripts/deps/build-dependencies-linux-cross.sh
4802 views
#!/usr/bin/env bash12# SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <[email protected]>3# SPDX-License-Identifier: CC-BY-NC-ND-4.04#5# NOTE: In addition to the terms of CC-BY-NC-ND-4.0, you may not use this file to create6# packages or build recipes without explicit permission from the copyright holder.7#89set -e1011if [ "$#" -lt 4 ]; then12echo "Syntax: $0 [-skip-download] [-skip-cleanup] [-only-download] <host directory> <cross architecture> <cross chroot> <output directory>"13exit 114fi1516for arg in "$@"; do17if [ "$arg" == "-skip-download" ]; then18echo "Not downloading sources."19SKIP_DOWNLOAD=true20shift21elif [ "$arg" == "-skip-cleanup" ]; then22echo "Not removing build directory."23SKIP_CLEANUP=true24shift25elif [ "$arg" == "-only-download" ]; then26echo "Only downloading sources."27ONLY_DOWNLOAD=true28shift29fi30done3132SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))33NPROCS="$(getconf _NPROCESSORS_ONLN)"34HOSTDIR="$1"35if [ "${HOSTDIR:0:1}" != "/" ]; then36HOSTDIR="$PWD/$HOSTDIR"37fi38CROSSARCH="$2"39SYSROOTDIR="$3"40if [ "${SYSROOTDIR:0:1}" != "/" ]; then41SYSROOTDIR="$PWD/$SYSROOTDIR"42fi43INSTALLDIR="$4"44if [ "${INSTALLDIR:0:1}" != "/" ]; then45INSTALLDIR="$PWD/$INSTALLDIR"46fi47TOOLCHAINFILE="$INSTALLDIR/toolchain.cmake"48CMAKE_COMMON=(49-DCMAKE_BUILD_TYPE=Release50-DCMAKE_TOOLCHAIN_FILE="$TOOLCHAINFILE"51-DCMAKE_PREFIX_PATH="$INSTALLDIR"52-DCMAKE_INSTALL_PREFIX="$INSTALLDIR"53)5455# Determine architecture.56if [ "$CROSSARCH" == "arm64" ]; then57CROSSSYSARCH="aarch64"58CROSSTRIPLET="aarch64-linux-gnu"59CMAKEPROCESSOR="aarch64"60elif [ "$CROSSARCH" == "armhf" ]; then61CROSSSYSARCH="armhf"62CROSSTRIPLET="arm-linux-gnueabihf"63CMAKEPROCESSOR="armv7-a"64else65echo "Unknown cross arch $CROSSARCH"66exit 167fi6869source "$SCRIPTDIR/versions"7071mkdir -p "${INSTALLDIR}"72mkdir -p deps-build73cd deps-build7475if [[ "$SKIP_DOWNLOAD" != true && ! -f "libbacktrace-$LIBBACKTRACE.tar.gz" ]]; then76curl -C - -L \77-o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download" \78-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \79-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \80-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz" \81-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \82-O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz" \83-o "zlib-ng-$ZLIBNG.tar.gz" "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/$ZLIBNG.tar.gz" \84-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \85-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \86-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \87-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \88-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \89-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \90-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtwayland-everywhere-src-$QT.tar.xz" \91-o "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz" "https://github.com/ianlancetaylor/libbacktrace/archive/$LIBBACKTRACE_COMMIT.tar.gz" \92-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \93-o "cpuinfo-$CPUINFO_COMMIT.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO_COMMIT.tar.gz" \94-o "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC_COMMIT.tar.gz" \95-o "plutosvg-$PLUTOSVG_COMMIT.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG_COMMIT.tar.gz" \96-o "shaderc-$SHADERC_COMMIT.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC_COMMIT.tar.gz" \97-o "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH_COMMIT.tar.gz"98fi99100cat > SHASUMS <<EOF101$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz102$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz103$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz104$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz105$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz106$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz107$ZLIBNG_GZ_HASH zlib-ng-$ZLIBNG.tar.gz108$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz109$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz110$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz111$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz112$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz113$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz114$QTWAYLAND_XZ_HASH qtwayland-everywhere-src-$QT.tar.xz115$LIBBACKTRACE_GZ_HASH libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz116$SDL3_GZ_HASH SDL3-$SDL3.tar.gz117$CPUINFO_GZ_HASH cpuinfo-$CPUINFO_COMMIT.tar.gz118$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC_COMMIT.tar.gz119$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG_COMMIT.tar.gz120$SHADERC_GZ_HASH shaderc-$SHADERC_COMMIT.tar.gz121$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH_COMMIT.tar.gz122EOF123124shasum -a 256 --check SHASUMS125126# Have to clone with git, because it does version detection.127if [[ "$SKIP_DOWNLOAD" != true && ! -d "SPIRV-Cross" ]]; then128git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS_TAG --depth 1129if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then130echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"131exit 1132fi133fi134135# Only downloading sources?136if [ "$ONLY_DOWNLOAD" == true ]; then137exit 0138fi139140# Stop pkg-config picking up host files.141export PKG_CONFIG_PATH=${SYSROOTDIR}/usr/lib/${CROSSTRIPLET}/pkgconfig:${SYSROOTDIR}/usr/lib/pkgconfig:${SYSROOTDIR}/usr/share/pkgconfig142export PKG_CONFIG_SYSROOT_DIR=${SYSROOTDIR}143144# Generate cmake toolchain file.145cat > "$TOOLCHAINFILE" << EOF146set(CMAKE_CROSSCOMPILING TRUE)147set(CMAKE_SYSTEM_NAME Linux)148set(CMAKE_SYSTEM_PROCESSOR ${CMAKEPROCESSOR})149150set(CMAKE_C_COMPILER "/usr/bin/${CROSSTRIPLET}-gcc")151set(CMAKE_C_COMPILER_TARGET "${CROSSTRIPLET}")152set(CMAKE_C_COMPILER_AR "/usr/bin/${CROSSTRIPLET}-ar")153set(CMAKE_C_COMPILER_RANLIB "/usr/bin/${CROSSTRIPLET}-ranlib")154155set(CMAKE_CXX_COMPILER "/usr/bin/${CROSSTRIPLET}-g++")156set(CMAKE_CXX_COMPILER_TARGET "${CROSSTRIPLET}")157set(CMAKE_CXX_COMPILER_AR "/usr/bin/${CROSSTRIPLET}-ar")158set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/${CROSSTRIPLET}-ranlib")159160set(CMAKE_FIND_ROOT_PATH "${INSTALLDIR};${SYSROOTDIR}")161set(CMAKE_SYSROOT "${SYSROOTDIR}")162163set(CMAKE_PKG_CONFIG_PC_PATH "${PKG_CONFIG_PATH}")164set(CMAKE_PKG_CONFIG_SYSROOT_DIR "${PKG_CONFIG_SYSROOT_DIR}")165166set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)167set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)168set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)169set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)170EOF171172# Build zlib first because of the things that depend on it.173# Disabled because it currently causes crashes on armhf.174#echo "Building zlib-ng..."175#rm -fr "zlib-ng-$ZLIBNG"176#tar xf "zlib-ng-$ZLIBNG.tar.gz"177#cd "zlib-ng-$ZLIBNG"178#cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DZLIB_COMPAT=ON -DZLIBNG_ENABLE_TESTS=OFF -DZLIB_ENABLE_TESTS=OFF -DWITH_GTEST=OFF -B build -G Ninja179#cmake --build build --parallel180#ninja -C build install181#cd ..182183# NOTE: Must be a shared library because otherwise aarch64 libgcc symbols are missing when building with clang.184echo "Building libbacktrace..."185rm -fr "libbacktrace-$LIBBACKTRACE_COMMIT"186tar xf "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz"187cd "libbacktrace-$LIBBACKTRACE_COMMIT"188CFLAGS="-fmacro-prefix-map=\"${PWD}\"=. -ffile-prefix-map=\"${PWD}\"=." ./configure --prefix="$INSTALLDIR" --build=x86_64-linux-gnu --host="${CROSSTRIPLET}" --with-pic --enable-shared --disable-static189make190make install191cd ..192193echo "Building libpng..."194rm -fr "libpng-$LIBPNG"195tar xf "libpng-$LIBPNG.tar.gz"196cd "libpng-$LIBPNG"197patch -p1 < "$SCRIPTDIR/libpng-1.6.50-apng.patch"198cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_STATIC=OFF -DPNG_SHARED=ON -DPNG_TOOLS=OFF -B build -G Ninja199cmake --build build --parallel200ninja -C build install201cd ..202203echo "Building libjpeg..."204rm -fr "libjpeg-turbo-$LIBJPEGTURBO"205tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"206cd "libjpeg-turbo-$LIBJPEGTURBO"207cmake "${CMAKE_COMMON[@]}" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -B build -G Ninja208cmake --build build --parallel209ninja -C build install210cd ..211212echo "Building Zstandard..."213rm -fr "zstd-$ZSTD"214tar xf "zstd-$ZSTD.tar.gz"215cd "zstd-$ZSTD"216cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_SHARED=ON -DZSTD_BUILD_STATIC=OFF -DZSTD_BUILD_PROGRAMS=OFF -B build -G Ninja build/cmake217cmake --build build --parallel218ninja -C build install219cd ..220221echo "Building WebP..."222rm -fr "libwebp-$LIBWEBP"223tar xf "libwebp-$LIBWEBP.tar.gz"224cd "libwebp-$LIBWEBP"225cmake "${CMAKE_COMMON[@]}" -B build -G Ninja \226-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \227-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON228cmake --build build --parallel229ninja -C build install230cd ..231232echo "Building libzip..."233rm -fr "libzip-$LIBZIP"234tar xf "libzip-$LIBZIP.tar.gz"235cd "libzip-$LIBZIP"236cmake "${CMAKE_COMMON[@]}" -B build -G Ninja \237-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \238-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \239-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF240cmake --build build --parallel241ninja -C build install242cd ..243244echo "Building FreeType..."245rm -fr "freetype-$FREETYPE"246tar xf "freetype-$FREETYPE.tar.gz"247cd "freetype-$FREETYPE"248patch -p1 < "$SCRIPTDIR/freetype-harfbuzz-soname.patch"249cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=ON -DFT_REQUIRE_PNG=ON -DFT_DISABLE_BZIP2=TRUE -DFT_DISABLE_BROTLI=TRUE -DFT_DYNAMIC_HARFBUZZ=TRUE -B build -G Ninja250cmake --build build --parallel251ninja -C build install252cd ..253254echo "Building HarfBuzz..."255rm -fr "harfbuzz-$HARFBUZZ"256tar xf "harfbuzz-$HARFBUZZ.tar.gz"257cd "harfbuzz-$HARFBUZZ"258cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build -G Ninja259cmake --build build --parallel260ninja -C build install261cd ..262263echo "Building SDL..."264rm -fr "SDL3-$SDL3"265tar xf "SDL3-$SDL3.tar.gz"266cd "SDL3-$SDL3"267cmake -B build "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -G Ninja268cmake --build build --parallel269ninja -C build install270cd ..271272# Couple notes:273# -fontconfig is needed otherwise Qt Widgets render only boxes.274# -qt-doubleconversion avoids a dependency on libdouble-conversion.275# ICU avoids pulling in a bunch of large libraries, and hopefully we can get away without it.276# OpenGL is needed to render window decorations in Wayland, apparently.277# dbus-runtime and linked off to avoid a relocation error (different to host.. probably should change that).278echo "Building Qt Base..."279rm -fr "qtbase-everywhere-src-$QT"280tar xf "qtbase-everywhere-src-$QT.tar.xz"281cd "qtbase-everywhere-src-$QT"282patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"283mkdir build284cd build285../configure -prefix "$INSTALLDIR" -extprefix "$INSTALLDIR" -qt-host-path "$HOSTDIR" -release -dbus runtime -fontconfig -qt-doubleconversion -ssl -openssl-runtime -opengl desktop -qpa xcb,wayland -xkbcommon -xcb -gtk -- -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAINFILE" -DQT_GENERATE_SBOM=OFF -DFEATURE_cups=OFF -DFEATURE_dbus=ON -DFEATURE_dbus_linked=OFF -DFEATURE_icu=OFF -DFEATURE_sql=OFF -DFEATURE_system_png=ON -DFEATURE_system_jpeg=ON -DFEATURE_system_zlib=ON -DFEATURE_system_freetype=ON -DFEATURE_system_harfbuzz=ON286cmake --build . --parallel287ninja install288cd ../../289290echo "Building Qt SVG..."291rm -fr "qtsvg-everywhere-src-$QT"292tar xf "qtsvg-everywhere-src-$QT.tar.xz"293cd "qtsvg-everywhere-src-$QT"294mkdir build295cd build296"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF297cmake --build . --parallel298ninja install299cd ../../300301echo "Building Qt Image Formats..."302rm -fr "qtimageformats-everywhere-src-$QT"303tar xf "qtimageformats-everywhere-src-$QT.tar.xz"304cd "qtimageformats-everywhere-src-$QT"305mkdir build306cd build307"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_system_webp=ON308cmake --build . --parallel309ninja install310cd ../../311312echo "Building Qt Wayland..."313rm -fr "qtwayland-everywhere-src-$QT"314tar xf "qtwayland-everywhere-src-$QT.tar.xz"315cd "qtwayland-everywhere-src-$QT"316mkdir build317cd build318"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_wayland_server=OFF319cmake --build . --parallel320ninja install321cd ../../322323echo "Installing Qt Tools..."324rm -fr "qttools-everywhere-src-$QT"325tar xf "qttools-everywhere-src-$QT.tar.xz"326cd "qttools-everywhere-src-$QT"327328# Force disable clang scanning, it gets very confused.329patch -u configure.cmake <<EOF330--- configure.cmake331+++ configure.cmake332@@ -3,11 +3,11 @@333334#### Tests335336-qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)337+#qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)338339-if(TARGET WrapLibClang::WrapLibClang)340- set(TEST_libclang "ON" CACHE BOOL "Required libclang version found." FORCE)341-endif()342+#if(TARGET WrapLibClang::WrapLibClang)343+# set(TEST_libclang "ON" CACHE BOOL "Required libclang version found." FORCE)344+#endif()345346347348349EOF350351mkdir build352cd build353"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=ON -DFEATURE_kmap2qmap=OFF -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF354cmake --build . --parallel355ninja install356cd ../../357358echo "Installing Qt Translations..."359rm -fr "qttranslations-everywhere-src-$QT"360tar xf "qttranslations-everywhere-src-$QT.tar.xz"361cd "qttranslations-everywhere-src-$QT"362mkdir build363cd build364"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF365cmake --build . --parallel366ninja install367cd ../../368369echo "Building shaderc..."370rm -fr "shaderc-$SHADERC_COMMIT"371tar xf "shaderc-$SHADERC_COMMIT.tar.gz"372cd "shaderc-$SHADERC_COMMIT"373cmake "${CMAKE_COMMON[@]}" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja374cmake --build build --parallel375ninja -C build install376cd ..377378echo "Building SPIRV-Cross..."379cd SPIRV-Cross380rm -fr build381cmake "${CMAKE_COMMON[@]}" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=OFF -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja382cmake --build build --parallel383ninja -C build install384cd ..385386echo "Building cpuinfo..."387rm -fr "cpuinfo-$CPUINFO_COMMIT"388tar xf "cpuinfo-$CPUINFO_COMMIT.tar.gz"389cd "cpuinfo-$CPUINFO_COMMIT"390cmake "${CMAKE_COMMON[@]}" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja391cmake --build build --parallel392ninja -C build install393cd ..394395echo "Building discord-rpc..."396rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"397tar xf "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz"398cd "discord-rpc-$DISCORD_RPC_COMMIT"399cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -B build -G Ninja400cmake --build build --parallel401ninja -C build install402cd ..403404echo "Building plutosvg..."405rm -fr "plutosvg-$PLUTOSVG_COMMIT"406tar xf "plutosvg-$PLUTOSVG_COMMIT.tar.gz"407cd "plutosvg-$PLUTOSVG_COMMIT"408cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja409cmake --build build --parallel410ninja -C build install411cd ..412413echo "Building soundtouch..."414rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"415tar xf "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz"416cd "soundtouch-$SOUNDTOUCH_COMMIT"417cmake "${CMAKE_COMMON[@]}" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja418cmake --build build --parallel419ninja -C build install420cd ..421422if [ "$SKIP_CLEANUP" != true ]; then423echo "Cleaning up..."424cd ..425rm -fr deps-build426fi427428429