duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

build-dependencies-mac.sh (17356B)


      1 #!/bin/bash
      2 
      3 set -e
      4 
      5 merge_binaries() {
      6   X86DIR=$1
      7   ARMDIR=$2
      8   echo "Merging ARM64 binaries from $ARMDIR into fat binaries at $X86DIR..."
      9 
     10   IFS="
     11 "
     12   pushd "$X86DIR"
     13   for X86BIN in $(find . -type f \( -name '*.dylib' -o -name '*.a' -o -perm +111 \)); do
     14     if file "$X86DIR/$X86BIN" | grep "Mach-O " >/dev/null; then
     15       ARMBIN="${ARMDIR}/${X86BIN}"
     16       echo "Merge $ARMBIN to $X86BIN..."
     17       lipo -create "$X86BIN" "$ARMBIN" -o "$X86BIN"
     18     fi
     19   done
     20   popd
     21 }
     22 
     23 if [ "$#" -ne 1 ]; then
     24     echo "Syntax: $0 <output directory>"
     25     exit 1
     26 fi
     27 
     28 export MACOSX_DEPLOYMENT_TARGET=11.0
     29 
     30 NPROCS="$(getconf _NPROCESSORS_ONLN)"
     31 SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
     32 INSTALLDIR="$1"
     33 if [ "${INSTALLDIR:0:1}" != "/" ]; then
     34 	INSTALLDIR="$PWD/$INSTALLDIR"
     35 fi
     36 
     37 FREETYPE=2.13.3
     38 HARFBUZZ=9.0.0
     39 SDL2=2.30.6
     40 ZSTD=1.5.6
     41 LIBPNG=1.6.43
     42 LIBJPEGTURBO=3.0.3
     43 LIBWEBP=1.4.0
     44 FFMPEG=7.0.2
     45 MOLTENVK=1.2.9
     46 QT=6.7.2
     47 
     48 CPUINFO=7524ad504fdcfcf75a18a133da6abd75c5d48053
     49 DISCORD_RPC=144f3a3f1209994d8d9e8a87964a989cb9911c1e
     50 LUNASVG=9af1ac7b90658a279b372add52d6f77a4ebb482c
     51 SHADERC=f60bb80e255144e71776e2ad570d89b78ea2ab4f
     52 SOUNDTOUCH=463ade388f3a51da078dc9ed062bf28e4ba29da7
     53 SPIRV_CROSS=vulkan-sdk-1.3.290.0
     54 
     55 mkdir -p deps-build
     56 cd deps-build
     57 
     58 export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$PKG_CONFIG_PATH"
     59 export LDFLAGS="-L$INSTALLDIR/lib $LDFLAGS"
     60 export CFLAGS="-I$INSTALLDIR/include $CFLAGS"
     61 export CXXFLAGS="-I$INSTALLDIR/include $CXXFLAGS"
     62 CMAKE_COMMON=(
     63 	-DCMAKE_BUILD_TYPE=Release
     64 	-DCMAKE_SHARED_LINKER_FLAGS="-dead_strip -dead_strip_dylibs"
     65 	-DCMAKE_PREFIX_PATH="$INSTALLDIR"
     66 	-DCMAKE_INSTALL_PREFIX="$INSTALLDIR"
     67 	-DCMAKE_INSTALL_NAME_DIR='$<INSTALL_PREFIX>/lib'
     68 )
     69 CMAKE_ARCH_X64=-DCMAKE_OSX_ARCHITECTURES="x86_64"
     70 CMAKE_ARCH_ARM64=-DCMAKE_OSX_ARCHITECTURES="arm64"
     71 CMAKE_ARCH_UNIVERSAL=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
     72 
     73 cat > SHASUMS <<EOF
     74 0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289  freetype-$FREETYPE.tar.xz
     75 b7e481b109d19aefdba31e9f5888aa0cdfbe7608fed9a43494c060ce1f8a34d2  harfbuzz-$HARFBUZZ.tar.gz
     76 6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c  libpng-$LIBPNG.tar.xz
     77 343e789069fc7afbcdfe44dbba7dbbf45afa98a15150e079a38e60e44578865d  libjpeg-turbo-$LIBJPEGTURBO.tar.gz
     78 61f873ec69e3be1b99535634340d5bde750b2e4447caa1db9f61be3fd49ab1e5  libwebp-$LIBWEBP.tar.gz
     79 c6ef64ca18a19d13df6eb22df9aff19fb0db65610a74cc81dae33a82235cacd4  SDL2-$SDL2.tar.gz
     80 8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1  zstd-$ZSTD.tar.gz
     81 8646515b638a3ad303e23af6a3587734447cb8fc0a0c064ecdb8e95c4fd8b389  ffmpeg-$FFMPEG.tar.xz
     82 f415a09385030c6510a936155ce211f617c31506db5fbc563e804345f1ecf56e  v$MOLTENVK.tar.gz
     83 c5f22a5e10fb162895ded7de0963328e7307611c688487b5d152c9ee64767599  qtbase-everywhere-src-$QT.tar.xz
     84 e1a1d8785fae67d16ad0a443b01d5f32663a6b68d275f1806ebab257485ce5d6  qtimageformats-everywhere-src-$QT.tar.xz
     85 fb0d1286a35be3583fee34aeb5843c94719e07193bdf1d4d8b0dc14009caef01  qtsvg-everywhere-src-$QT.tar.xz
     86 58e855ad1b2533094726c8a425766b63a04a0eede2ed85086860e54593aa4b2a  qttools-everywhere-src-$QT.tar.xz
     87 9845780b5dc1b7279d57836db51aeaf2e4a1160c42be09750616f39157582ca9  qttranslations-everywhere-src-$QT.tar.xz
     88 e1351218d270db49c3dddcba04fb2153b09731ea3fa6830e423f5952f44585be  cpuinfo-$CPUINFO.tar.gz
     89 3eea5ccce6670c126282f1ba4d32c19d486db49a1a5cbfb8d6f48774784d310c  discord-rpc-$DISCORD_RPC.tar.gz
     90 3998b024b0d442614a9ee270e76e018bb37a17b8c6941212171731123cbbcac7  lunasvg-$LUNASVG.tar.gz
     91 4c1780b6c65c27c4dcb109f08ab632241c98b77fe2e22be726c151ff514482bf  shaderc-$SHADERC.tar.gz
     92 fe45c2af99f6102d2704277d392c1c83b55180a70bfd17fb888cc84a54b70573  soundtouch-$SOUNDTOUCH.tar.gz
     93 EOF
     94 
     95 curl -L \
     96 	-o "freetype-$FREETYPE.tar.xz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.xz/download" \
     97 	-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
     98 	-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.xz" \
     99 	-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \
    100 	-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
    101 	-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL2/SDL2-$SDL2.tar.gz" \
    102 	-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
    103 	-O "https://ffmpeg.org/releases/ffmpeg-$FFMPEG.tar.xz" \
    104 	-O "https://github.com/KhronosGroup/MoltenVK/archive/refs/tags/v$MOLTENVK.tar.gz" \
    105 	-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
    106 	-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
    107 	-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
    108 	-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
    109 	-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
    110 	-o "cpuinfo-$CPUINFO.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO.tar.gz" \
    111 	-o "discord-rpc-$DISCORD_RPC.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC.tar.gz" \
    112 	-o "lunasvg-$LUNASVG.tar.gz" "https://github.com/stenzek/lunasvg/archive/$LUNASVG.tar.gz" \
    113 	-o "shaderc-$SHADERC.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC.tar.gz" \
    114 	-o "soundtouch-$SOUNDTOUCH.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH.tar.gz"
    115 
    116 shasum -a 256 --check SHASUMS
    117 
    118 # Have to clone with git, because it does version detection.
    119 if [ ! -d "SPIRV-Cross" ]; then
    120   git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS --depth 1
    121 fi
    122 
    123 echo "Installing libpng..."
    124 rm -fr "libpng-$LIBPNG"
    125 tar xf "libpng-$LIBPNG.tar.xz"
    126 cd "libpng-$LIBPNG"
    127 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_FRAMEWORK=OFF -B build
    128 make -C build "-j$NPROCS"
    129 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_ARM_NEON=on -DPNG_FRAMEWORK=OFF -B build-arm64
    130 make -C build-arm64 "-j$NPROCS"
    131 merge_binaries $(realpath build) $(realpath build-arm64)
    132 make -C build install
    133 cd ..
    134 
    135 echo "Building libjpeg..."
    136 rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
    137 tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
    138 cd "libjpeg-turbo-$LIBJPEGTURBO"
    139 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -B build
    140 make -C build "-j$NPROCS"
    141 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -B build-arm64
    142 make -C build-arm64 "-j$NPROCS"
    143 merge_binaries $(realpath build) $(realpath build-arm64)
    144 make -C build install
    145 cd ..
    146 
    147 echo "Installing Zstd..."
    148 rm -fr "zstd-$ZSTD"
    149 tar xf "zstd-$ZSTD.tar.gz"
    150 cd "zstd-$ZSTD"
    151 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_PROGRAMS=OFF -B build-dir build/cmake
    152 make -C build-dir "-j$NPROCS"
    153 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_PROGRAMS=OFF -B build-dir-arm64 build/cmake
    154 make -C build-dir-arm64 "-j$NPROCS"
    155 merge_binaries $(realpath build-dir) $(realpath build-dir-arm64)
    156 make -C build-dir install
    157 cd ..
    158 
    159 echo "Building FreeType without HarfBuzz..."
    160 rm -fr "freetype-$FREETYPE"
    161 tar xf "freetype-$FREETYPE.tar.xz"
    162 cd "freetype-$FREETYPE"
    163 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=ON -DFT_REQUIRE_PNG=ON -DFT_DISABLE_BZIP2=TRUE -DFT_DISABLE_BROTLI=TRUE -DFT_DISABLE_HARFBUZZ=TRUE -B build
    164 cmake --build build --parallel
    165 cmake --install build
    166 cd ..
    167 
    168 echo "Building HarfBuzz..."
    169 rm -fr "harfbuzz-$HARFBUZZ"
    170 tar xf "harfbuzz-$HARFBUZZ.tar.gz"
    171 cd "harfbuzz-$HARFBUZZ"
    172 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build
    173 cmake --build build --parallel
    174 cmake --install build
    175 cd ..
    176 
    177 echo "Building FreeType with HarfBuzz..."
    178 rm -fr "freetype-$FREETYPE"
    179 tar xf "freetype-$FREETYPE.tar.xz"
    180 cd "freetype-$FREETYPE"
    181 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=ON -DFT_REQUIRE_PNG=ON -DFT_DISABLE_BZIP2=TRUE -DFT_DISABLE_BROTLI=TRUE -DFT_REQUIRE_HARFBUZZ=TRUE -B build
    182 cmake --build build --parallel
    183 cmake --install build
    184 cd ..
    185 
    186 echo "Installing WebP..."
    187 rm -fr "libwebp-$LIBWEBP"
    188 tar xf "libwebp-$LIBWEBP.tar.gz"
    189 cd "libwebp-$LIBWEBP"
    190 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -B build \
    191 	-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
    192 	-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
    193 make -C build "-j$NPROCS"
    194 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -B build-arm64 \
    195 	-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
    196 	-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
    197 make -C build-arm64 "-j$NPROCS"
    198 merge_binaries $(realpath build) $(realpath build-arm64)
    199 make -C build install
    200 cd ..
    201 
    202 echo "Installing SDL2..."
    203 rm -fr "SDL2-$SDL2"
    204 tar xf "SDL2-$SDL2.tar.gz"
    205 cd "SDL2-$SDL2"
    206 cmake -B build "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSDL_X11=OFF -DBUILD_SHARED_LIBS=ON
    207 make -C build "-j$NPROCS"
    208 make -C build install
    209 cd ..
    210 
    211 echo "Installing FFmpeg..."
    212 rm -fr "ffmpeg-$FFMPEG"
    213 tar xf "ffmpeg-$FFMPEG.tar.xz"
    214 cd "ffmpeg-$FFMPEG"
    215 mkdir build
    216 cd build
    217 LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
    218 	../configure --prefix="$INSTALLDIR" \
    219 	--enable-cross-compile --arch=x86_64 --cc='clang -arch x86_64' --cxx='clang++ -arch x86_64' --disable-x86asm \
    220 	--disable-all --disable-autodetect --disable-static --enable-shared \
    221 	--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
    222 	--enable-audiotoolbox --enable-videotoolbox \
    223 	--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
    224 	--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
    225 	--enable-protocol=file
    226 make "-j$NPROCS"
    227 cd ..
    228 mkdir build-arm64
    229 cd build-arm64
    230 LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
    231 	../configure --prefix="$INSTALLDIR" \
    232 	--enable-cross-compile --arch=arm64 --cc='clang -arch arm64' --cxx='clang++ -arch arm64' --disable-x86asm \
    233 	--disable-all --disable-autodetect --disable-static --enable-shared \
    234 	--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
    235 	--enable-audiotoolbox --enable-videotoolbox \
    236 	--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
    237 	--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
    238 	--enable-protocol=file
    239 make "-j$NPROCS"
    240 cd ..
    241 merge_binaries $(realpath build) $(realpath build-arm64)
    242 cd build
    243 make install
    244 cd ../..
    245 
    246 # MoltenVK already builds universal binaries, nothing special to do here.
    247 echo "Installing MoltenVK..."
    248 rm -fr "MoltenVK-${MOLTENVK}"
    249 tar xf "v$MOLTENVK.tar.gz"
    250 cd "MoltenVK-${MOLTENVK}"
    251 ./fetchDependencies --macos
    252 make macos
    253 cp Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib "$INSTALLDIR/lib/"
    254 cd ..
    255 
    256 echo "Installing Qt Base..."
    257 rm -fr "qtbase-everywhere-src-$QT"
    258 tar xf "qtbase-everywhere-src-$QT.tar.xz"
    259 cd "qtbase-everywhere-src-$QT"
    260 
    261 # since we don't have a direct reference to QtSvg, it doesn't deployed directly from the main binary
    262 # (only indirectly from iconengines), and the libqsvg.dylib imageformat plugin does not get deployed.
    263 # We could run macdeployqt twice, but that's even more janky than patching it.
    264 
    265 # https://github.com/qt/qtbase/commit/7b018629c3c3ab23665bf1da00c43c1546042035
    266 # The QProcess default wait time of 30s may be too short in e.g. CI environments where processes may be blocked
    267 # for a longer time waiting for CPU or IO.
    268 
    269 patch -u src/tools/macdeployqt/shared/shared.cpp <<EOF
    270 --- shared.cpp
    271 +++ shared.cpp
    272 @@ -152,7 +152,7 @@
    273      LogDebug() << " inspecting" << binaryPath;
    274      QProcess otool;
    275      otool.start("otool", QStringList() << "-L" << binaryPath);
    276 -    otool.waitForFinished();
    277 +    otool.waitForFinished(-1);
    278  
    279      if (otool.exitStatus() != QProcess::NormalExit || otool.exitCode() != 0) {
    280          LogError() << otool.readAllStandardError();
    281 @@ -1122,14 +1122,8 @@
    282          addPlugins(QStringLiteral("networkinformation"));
    283      }
    284  
    285 -    // All image formats (svg if QtSvg is used)
    286 -    const bool usesSvg = deploymentInfo.containsModule("Svg", libInfix);
    287 -    addPlugins(QStringLiteral("imageformats"), [usesSvg](const QString &lib) {
    288 -        if (lib.contains(QStringLiteral("qsvg")) && !usesSvg)
    289 -            return false;
    290 -        return true;
    291 -    });
    292 -
    293 +    // All image formats
    294 +    addPlugins(QStringLiteral("imageformats"));
    295      addPlugins(QStringLiteral("iconengines"));
    296  
    297      // Platforminputcontext plugins if QtGui is in use
    298 EOF
    299 
    300 cmake -B build "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DFEATURE_dbus=OFF -DFEATURE_framework=OFF -DFEATURE_icu=OFF -DFEATURE_opengl=OFF -DFEATURE_sql=OFF -DFEATURE_gssapi=OFF -DFEATURE_system_png=ON -DFEATURE_system_jpeg=ON -DFEATURE_system_zlib=ON -DFEATURE_system_freetype=ON -DFEATURE_system_harfbuzz=ON
    301 make -C build "-j$NPROCS"
    302 make -C build install
    303 cd ..
    304 
    305 echo "Installing Qt SVG..."
    306 rm -fr "qtsvg-everywhere-src-$QT"
    307 tar xf "qtsvg-everywhere-src-$QT.tar.xz"
    308 cd "qtsvg-everywhere-src-$QT"
    309 mkdir build
    310 cd build
    311 "$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL"
    312 make "-j$NPROCS"
    313 make install
    314 cd ../..
    315 
    316 echo "Installing Qt Image Formats..."
    317 rm -fr "qtimageformats-everywhere-src-$QT"
    318 tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
    319 cd "qtimageformats-everywhere-src-$QT"
    320 mkdir build
    321 cd build
    322 "$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DFEATURE_system_webp=ON
    323 make "-j$NPROCS"
    324 make install
    325 cd ../..
    326 
    327 echo "Installing Qt Tools..."
    328 rm -fr "qttools-everywhere-src-$QT"
    329 tar xf "qttools-everywhere-src-$QT.tar.xz"
    330 cd "qttools-everywhere-src-$QT"
    331 mkdir build
    332 cd build
    333 "$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=ON -DFEATURE_kmap2qmap=OFF -DFEATURE_linguist=ON -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF
    334 make "-j$NPROCS"
    335 make install
    336 cd ../..
    337 
    338 echo "Installing Qt Translations..."
    339 rm -fr "qttranslations-everywhere-src-$QT"
    340 tar xf "qttranslations-everywhere-src-$QT.tar.xz"
    341 cd "qttranslations-everywhere-src-$QT"
    342 mkdir build
    343 cd build
    344 "$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL"
    345 make "-j$NPROCS"
    346 make install
    347 cd ../..
    348 
    349 echo "Building shaderc..."
    350 rm -fr "shaderc-$SHADERC"
    351 tar xf "shaderc-$SHADERC.tar.gz"
    352 cd "shaderc-$SHADERC"
    353 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build
    354 make -C build "-j$NPROCS"
    355 make -C build install
    356 cd ..
    357 
    358 echo "Building SPIRV-Cross..."
    359 cd SPIRV-Cross
    360 rm -fr build
    361 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -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=ON -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build
    362 cmake --build build --parallel
    363 cmake --install build
    364 cd ..
    365 
    366 echo "Building cpuinfo..."
    367 rm -fr "cpuinfo-$CPUINFO"
    368 tar xf "cpuinfo-$CPUINFO.tar.gz"
    369 cd "cpuinfo-$CPUINFO"
    370 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -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
    371 make -C build "-j$NPROCS"
    372 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -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-arm64
    373 make -C build-arm64 "-j$NPROCS"
    374 merge_binaries $(realpath build) $(realpath build-arm64)
    375 make -C build install
    376 cd ..
    377 
    378 echo "Building discord-rpc..."
    379 rm -fr "discord-rpc-$DISCORD_RPC"
    380 tar xf "discord-rpc-$DISCORD_RPC.tar.gz"
    381 cd "discord-rpc-$DISCORD_RPC"
    382 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -B build
    383 cmake --build build --parallel
    384 cmake --install build
    385 cd ..
    386 
    387 echo "Building lunasvg..."
    388 rm -fr "lunasvg-$LUNASVG"
    389 tar xf "lunasvg-$LUNASVG.tar.gz"
    390 cd "lunasvg-$LUNASVG"
    391 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DLUNASVG_BUILD_EXAMPLES=OFF -B build -G Ninja
    392 cmake --build build --parallel
    393 ninja -C build install
    394 cd ..
    395 
    396 echo "Building soundtouch..."
    397 rm -fr "soundtouch-$SOUNDTOUCH"
    398 tar xf "soundtouch-$SOUNDTOUCH.tar.gz"
    399 cd "soundtouch-$SOUNDTOUCH"
    400 cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build
    401 cmake --build build --parallel
    402 cmake --install build
    403 cd ..
    404 
    405 echo "Cleaning up..."
    406 cd ..
    407 rm -rf deps-build