Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/scripts/deps/build-dependencies-mac.sh
7491 views
1
#!/bin/bash
2
3
# SPDX-License-Identifier: CC-BY-NC-ND-4.0
4
5
set -e
6
7
merge_binaries() {
8
X86DIR=$1
9
ARMDIR=$2
10
echo "Merging ARM64 binaries from $ARMDIR into fat binaries at $X86DIR..."
11
12
IFS="
13
"
14
pushd "$X86DIR"
15
for X86BIN in $(find . -type f \( -name '*.dylib' -o -name '*.a' -o -perm +111 \)); do
16
if file "$X86DIR/$X86BIN" | grep "Mach-O " | grep " x86_64" >/dev/null; then
17
ARMBIN="${ARMDIR}/${X86BIN}"
18
echo "Merge $ARMBIN to $X86BIN..."
19
lipo -create "$X86BIN" "$ARMBIN" -o "$X86BIN"
20
fi
21
done
22
popd
23
}
24
25
if [ "$#" -ne 1 ]; then
26
echo "Syntax: $0 <output directory>"
27
exit 1
28
fi
29
30
export MACOSX_DEPLOYMENT_TARGET=13.3
31
32
NPROCS="$(getconf _NPROCESSORS_ONLN)"
33
SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
34
INSTALLDIR="$1"
35
if [ "${INSTALLDIR:0:1}" != "/" ]; then
36
INSTALLDIR="$PWD/$INSTALLDIR"
37
fi
38
39
source "$SCRIPTDIR/versions"
40
MOLTENVK=1.4.0
41
42
mkdir -p deps-build
43
cd deps-build
44
45
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$PKG_CONFIG_PATH"
46
export LDFLAGS="-L$INSTALLDIR/lib $LDFLAGS"
47
export CFLAGS="-I$INSTALLDIR/include $CFLAGS"
48
export CXXFLAGS="-I$INSTALLDIR/include $CXXFLAGS"
49
CMAKE_COMMON=(
50
-DCMAKE_BUILD_TYPE=Release
51
-DCMAKE_SHARED_LINKER_FLAGS="-dead_strip -dead_strip_dylibs"
52
-DCMAKE_PREFIX_PATH="$INSTALLDIR"
53
-DCMAKE_INSTALL_PREFIX="$INSTALLDIR"
54
-DCMAKE_INSTALL_NAME_DIR='$<INSTALL_PREFIX>/lib'
55
)
56
CMAKE_ARCH_X64=-DCMAKE_OSX_ARCHITECTURES="x86_64"
57
CMAKE_ARCH_ARM64=-DCMAKE_OSX_ARCHITECTURES="arm64"
58
CMAKE_ARCH_UNIVERSAL=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
59
60
# SBOM generation appears to be broken on MacOS, and I can't be arsed to debug it.
61
CMAKE_COMMON_QT=(
62
-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
63
-DQT_GENERATE_SBOM=OFF
64
)
65
66
cat > SHASUMS <<EOF
67
$BROTLI_GZ_HASH brotli-$BROTLI.tar.gz
68
$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz
69
$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz
70
$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz
71
$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz
72
$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz
73
$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz
74
$SDL3_GZ_HASH SDL3-$SDL3.tar.gz
75
$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz
76
$FFMPEG_XZ_HASH ffmpeg-$FFMPEG_VERSION.tar.xz
77
fc74aef926ee3cd473fe260a93819c09fdc939bff669271a587e9ebaa43d4306 v$MOLTENVK.tar.gz
78
$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz
79
$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz
80
$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz
81
$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz
82
$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz
83
$CPUINFO_GZ_HASH cpuinfo-$CPUINFO_COMMIT.tar.gz
84
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC_COMMIT.tar.gz
85
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG_COMMIT.tar.gz
86
$SHADERC_GZ_HASH shaderc-$SHADERC_COMMIT.tar.gz
87
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH_COMMIT.tar.gz
88
EOF
89
90
curl -L \
91
-o "brotli-$BROTLI.tar.gz" "https://github.com/google/brotli/archive/refs/tags/v$BROTLI.tar.gz" \
92
-o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download" \
93
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
94
-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz" \
95
-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \
96
-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
97
-O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz" \
98
-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \
99
-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
100
-O "https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.xz" \
101
-O "https://github.com/KhronosGroup/MoltenVK/archive/refs/tags/v$MOLTENVK.tar.gz" \
102
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
103
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
104
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
105
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
106
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
107
-o "cpuinfo-$CPUINFO_COMMIT.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO_COMMIT.tar.gz" \
108
-o "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC_COMMIT.tar.gz" \
109
-o "plutosvg-$PLUTOSVG_COMMIT.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG_COMMIT.tar.gz" \
110
-o "shaderc-$SHADERC_COMMIT.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC_COMMIT.tar.gz" \
111
-o "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH_COMMIT.tar.gz"
112
113
shasum -a 256 --check SHASUMS
114
115
# Have to clone with git, because it does version detection.
116
if [ ! -d "SPIRV-Cross" ]; then
117
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS_TAG --depth 1
118
if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then
119
echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"
120
exit 1
121
fi
122
fi
123
124
echo "Installing libpng..."
125
rm -fr "libpng-$LIBPNG"
126
tar xf "libpng-$LIBPNG.tar.gz"
127
cd "libpng-$LIBPNG"
128
patch -p1 < "$SCRIPTDIR/libpng-1.6.54-apng.patch"
129
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_FRAMEWORK=OFF -B build
130
make -C build "-j$NPROCS"
131
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_ARM_NEON=on -DPNG_FRAMEWORK=OFF -B build-arm64
132
make -C build-arm64 "-j$NPROCS"
133
merge_binaries $(realpath build) $(realpath build-arm64)
134
make -C build install
135
cd ..
136
rm -fr "libpng-$LIBPNG"
137
138
echo "Building libjpeg..."
139
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
140
tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
141
cd "libjpeg-turbo-$LIBJPEGTURBO"
142
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build
143
make -C build "-j$NPROCS"
144
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build-arm64
145
make -C build-arm64 "-j$NPROCS"
146
merge_binaries $(realpath build) $(realpath build-arm64)
147
make -C build install
148
cd ..
149
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
150
151
echo "Installing Zstandard..."
152
rm -fr "zstd-$ZSTD"
153
tar xf "zstd-$ZSTD.tar.gz"
154
cd "zstd-$ZSTD"
155
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_PROGRAMS=OFF -B build-dir build/cmake
156
make -C build-dir "-j$NPROCS"
157
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_PROGRAMS=OFF -B build-dir-arm64 build/cmake
158
make -C build-dir-arm64 "-j$NPROCS"
159
merge_binaries $(realpath build-dir) $(realpath build-dir-arm64)
160
make -C build-dir install
161
cd ..
162
rm -fr "zstd-$ZSTD"
163
164
echo "Installing Brotli..."
165
rm -fr "brotli-$BROTLI"
166
tar xf "brotli-$BROTLI.tar.gz"
167
cd "brotli-$BROTLI"
168
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=OFF -DBROTLI_BUILD_TOOLS=OFF -DBROTLI_DISABLE_TESTS=ON -B build
169
cmake --build build --parallel
170
cmake --install build
171
cd ..
172
rm -fr "brotli-$BROTLI"
173
174
echo "Installing WebP..."
175
rm -fr "libwebp-$LIBWEBP"
176
tar xf "libwebp-$LIBWEBP.tar.gz"
177
cd "libwebp-$LIBWEBP"
178
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -B build \
179
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
180
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
181
make -C build "-j$NPROCS"
182
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -B build-arm64 \
183
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
184
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
185
make -C build-arm64 "-j$NPROCS"
186
merge_binaries $(realpath build) $(realpath build-arm64)
187
make -C build install
188
cd ..
189
rm -fr "libwebp-$LIBWEBP"
190
191
echo "Installing libzip..."
192
rm -fr "libzip-$LIBZIP"
193
tar xf "libzip-$LIBZIP.tar.gz"
194
cd "libzip-$LIBZIP"
195
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -B build \
196
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
197
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
198
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
199
cmake --build build --parallel
200
cmake --install build
201
cd ..
202
rm -fr "libzip-$LIBZIP"
203
204
echo "Building FreeType..."
205
rm -fr "freetype-$FREETYPE"
206
tar xf "freetype-$FREETYPE.tar.gz"
207
cd "freetype-$FREETYPE"
208
patch -p1 < "$SCRIPTDIR/freetype-harfbuzz-soname.patch"
209
patch -p1 < "$SCRIPTDIR/freetype-static-brotli.patch"
210
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=ON -DFT_REQUIRE_PNG=ON -DFT_DISABLE_BZIP2=TRUE -DFT_REQUIRE_BROTLI=TRUE -DFT_DYNAMIC_HARFBUZZ=TRUE -B build
211
cmake --build build --parallel
212
cmake --install build
213
cd ..
214
rm -fr "freetype-$FREETYPE"
215
216
echo "Building HarfBuzz..."
217
rm -fr "harfbuzz-$HARFBUZZ"
218
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
219
cd "harfbuzz-$HARFBUZZ"
220
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build
221
cmake --build build --parallel
222
cmake --install build
223
cd ..
224
rm -fr "harfbuzz-$HARFBUZZ"
225
226
echo "Installing SDL..."
227
rm -fr "SDL3-$SDL3"
228
tar xf "SDL3-$SDL3.tar.gz"
229
cd "SDL3-$SDL3"
230
cmake -B build "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -DSDL_X11=OFF -DBUILD_SHARED_LIBS=ON
231
make -C build "-j$NPROCS"
232
make -C build install
233
cd ..
234
rm -fr "SDL3-$SDL3"
235
236
echo "Installing FFmpeg..."
237
rm -fr "ffmpeg-$FFMPEG_VERSION"
238
tar xf "ffmpeg-$FFMPEG_VERSION.tar.xz"
239
cd "ffmpeg-$FFMPEG_VERSION"
240
mkdir build
241
cd build
242
LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
243
../configure --prefix="$INSTALLDIR" \
244
--enable-cross-compile --arch=x86_64 --cc='clang -arch x86_64' --cxx='clang++ -arch x86_64' --disable-x86asm \
245
--disable-all --disable-autodetect --disable-static --enable-shared \
246
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
247
--enable-audiotoolbox --enable-videotoolbox \
248
--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
249
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
250
--enable-protocol=file
251
make "-j$NPROCS"
252
cd ..
253
mkdir build-arm64
254
cd build-arm64
255
LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
256
../configure --prefix="$INSTALLDIR" \
257
--enable-cross-compile --arch=arm64 --cc='clang -arch arm64' --cxx='clang++ -arch arm64' --disable-x86asm \
258
--disable-all --disable-autodetect --disable-static --enable-shared \
259
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
260
--enable-audiotoolbox --enable-videotoolbox \
261
--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
262
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
263
--enable-protocol=file
264
make "-j$NPROCS"
265
cd ..
266
merge_binaries $(realpath build) $(realpath build-arm64)
267
cd build
268
make install
269
cd ../..
270
rm -fr "ffmpeg-$FFMPEG_VERSION"
271
272
# MoltenVK already builds universal binaries, nothing special to do here.
273
echo "Installing MoltenVK..."
274
rm -fr "MoltenVK-${MOLTENVK}"
275
tar xf "v$MOLTENVK.tar.gz"
276
cd "MoltenVK-${MOLTENVK}"
277
./fetchDependencies --macos
278
make macos
279
cp Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib "$INSTALLDIR/lib/"
280
cd ..
281
rm -fr "MoltenVK-${MOLTENVK}"
282
283
echo "Installing Qt Base..."
284
rm -fr "qtbase-everywhere-src-$QT"
285
tar xf "qtbase-everywhere-src-$QT.tar.xz"
286
cd "qtbase-everywhere-src-$QT"
287
288
# Stop checkboxes in Fusion theme having such bright outlines.
289
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
290
291
# Allow window-modal dialog boxes in Tahoe, it's not a problem for us.
292
patch -p1 < "$SCRIPTDIR/qtbase-window-modal-tahoe.patch"
293
294
# since we don't have a direct reference to QtSvg, it doesn't deployed directly from the main binary
295
# (only indirectly from iconengines), and the libqsvg.dylib imageformat plugin does not get deployed.
296
# We could run macdeployqt twice, but that's even more janky than patching it.
297
patch -p1 < "$SCRIPTDIR/qtbase-macdeploy-imageformats.patch"
298
299
cmake -B build "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}" -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 -DFEATURE_brotli=OFF
300
make -C build "-j$NPROCS"
301
make -C build install
302
cd ..
303
rm -fr "qtbase-everywhere-src-$QT"
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_COMMON_QT[@]}"
312
make "-j$NPROCS"
313
make install
314
cd ../..
315
rm -fr "qtsvg-everywhere-src-$QT"
316
317
echo "Installing Qt Image Formats..."
318
rm -fr "qtimageformats-everywhere-src-$QT"
319
tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
320
cd "qtimageformats-everywhere-src-$QT"
321
mkdir build
322
cd build
323
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}" -DFEATURE_system_webp=ON
324
make "-j$NPROCS"
325
make install
326
cd ../..
327
rm -fr "qtimageformats-everywhere-src-$QT"
328
329
echo "Installing Qt Tools..."
330
rm -fr "qttools-everywhere-src-$QT"
331
tar xf "qttools-everywhere-src-$QT.tar.xz"
332
cd "qttools-everywhere-src-$QT"
333
patch -p1 < "$SCRIPTDIR/qttools-linguist-without-quick.patch"
334
mkdir build
335
cd build
336
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}" -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
337
make "-j$NPROCS"
338
make install
339
cd ../..
340
rm -fr "qttools-everywhere-src-$QT"
341
342
echo "Installing Qt Translations..."
343
rm -fr "qttranslations-everywhere-src-$QT"
344
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
345
cd "qttranslations-everywhere-src-$QT"
346
mkdir build
347
cd build
348
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}"
349
make "-j$NPROCS"
350
make install
351
cd ../..
352
rm -fr "qttranslations-everywhere-src-$QT"
353
354
echo "Building shaderc..."
355
rm -fr "shaderc-$SHADERC_COMMIT"
356
tar xf "shaderc-$SHADERC_COMMIT.tar.gz"
357
cd "shaderc-$SHADERC_COMMIT"
358
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_SKIP_EXECUTABLES=ON -B build
359
make -C build "-j$NPROCS"
360
make -C build install
361
cd ..
362
rm -fr "shaderc-$SHADERC_COMMIT"
363
364
echo "Building SPIRV-Cross..."
365
cd SPIRV-Cross
366
rm -fr build
367
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
368
cmake --build build --parallel
369
cmake --install build
370
rm -fr build
371
cd ..
372
373
echo "Building cpuinfo..."
374
rm -fr "cpuinfo-$CPUINFO_COMMIT"
375
tar xf "cpuinfo-$CPUINFO_COMMIT.tar.gz"
376
cd "cpuinfo-$CPUINFO_COMMIT"
377
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
378
make -C build "-j$NPROCS"
379
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
380
make -C build-arm64 "-j$NPROCS"
381
merge_binaries $(realpath build) $(realpath build-arm64)
382
make -C build install
383
cd ..
384
rm -fr "cpuinfo-$CPUINFO_COMMIT"
385
386
echo "Building discord-rpc..."
387
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
388
tar xf "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz"
389
cd "discord-rpc-$DISCORD_RPC_COMMIT"
390
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -B build
391
cmake --build build --parallel
392
cmake --install build
393
cd ..
394
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
395
396
echo "Building plutosvg..."
397
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
398
tar xf "plutosvg-$PLUTOSVG_COMMIT.tar.gz"
399
cd "plutosvg-$PLUTOSVG_COMMIT"
400
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build
401
cmake --build build --parallel
402
cmake --install build
403
cd ..
404
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
405
406
echo "Building soundtouch..."
407
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
408
tar xf "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz"
409
cd "soundtouch-$SOUNDTOUCH_COMMIT"
410
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build
411
cmake --build build --parallel
412
cmake --install build
413
cd ..
414
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
415
416
echo "Cleaning up..."
417
cd ..
418
rm -rf deps-build
419
420