Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/scripts/deps/build-dependencies-mac.sh
4212 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 " >/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=11.0
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.2.9
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
$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz
68
$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz
69
$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz
70
$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz
71
$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz
72
$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz
73
$SDL3_GZ_HASH SDL3-$SDL3.tar.gz
74
$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz
75
$FFMPEG_XZ_HASH ffmpeg-$FFMPEG.tar.xz
76
f415a09385030c6510a936155ce211f617c31506db5fbc563e804345f1ecf56e v$MOLTENVK.tar.gz
77
$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz
78
$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz
79
$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz
80
$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz
81
$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz
82
$CPUINFO_GZ_HASH cpuinfo-$CPUINFO.tar.gz
83
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC.tar.gz
84
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG.tar.gz
85
$SHADERC_GZ_HASH shaderc-$SHADERC.tar.gz
86
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH.tar.gz
87
EOF
88
89
curl -L \
90
-o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download" \
91
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
92
-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz" \
93
-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \
94
-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
95
-O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz" \
96
-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \
97
-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
98
-O "https://ffmpeg.org/releases/ffmpeg-$FFMPEG.tar.xz" \
99
-O "https://github.com/KhronosGroup/MoltenVK/archive/refs/tags/v$MOLTENVK.tar.gz" \
100
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
101
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
102
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
103
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
104
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
105
-o "cpuinfo-$CPUINFO.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO.tar.gz" \
106
-o "discord-rpc-$DISCORD_RPC.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC.tar.gz" \
107
-o "plutosvg-$PLUTOSVG.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG.tar.gz" \
108
-o "shaderc-$SHADERC.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC.tar.gz" \
109
-o "soundtouch-$SOUNDTOUCH.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH.tar.gz"
110
111
shasum -a 256 --check SHASUMS
112
113
# Have to clone with git, because it does version detection.
114
if [ ! -d "SPIRV-Cross" ]; then
115
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS --depth 1
116
if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then
117
echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"
118
exit 1
119
fi
120
fi
121
122
echo "Installing libpng..."
123
rm -fr "libpng-$LIBPNG"
124
tar xf "libpng-$LIBPNG.tar.gz"
125
cd "libpng-$LIBPNG"
126
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_FRAMEWORK=OFF -B build
127
make -C build "-j$NPROCS"
128
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_ARM_NEON=on -DPNG_FRAMEWORK=OFF -B build-arm64
129
make -C build-arm64 "-j$NPROCS"
130
merge_binaries $(realpath build) $(realpath build-arm64)
131
make -C build install
132
cd ..
133
134
echo "Building libjpeg..."
135
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
136
tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
137
cd "libjpeg-turbo-$LIBJPEGTURBO"
138
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -B build
139
make -C build "-j$NPROCS"
140
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -B build-arm64
141
make -C build-arm64 "-j$NPROCS"
142
merge_binaries $(realpath build) $(realpath build-arm64)
143
make -C build install
144
cd ..
145
146
echo "Installing Zstd..."
147
rm -fr "zstd-$ZSTD"
148
tar xf "zstd-$ZSTD.tar.gz"
149
cd "zstd-$ZSTD"
150
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_PROGRAMS=OFF -B build-dir build/cmake
151
make -C build-dir "-j$NPROCS"
152
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_PROGRAMS=OFF -B build-dir-arm64 build/cmake
153
make -C build-dir-arm64 "-j$NPROCS"
154
merge_binaries $(realpath build-dir) $(realpath build-dir-arm64)
155
make -C build-dir install
156
cd ..
157
158
echo "Installing WebP..."
159
rm -fr "libwebp-$LIBWEBP"
160
tar xf "libwebp-$LIBWEBP.tar.gz"
161
cd "libwebp-$LIBWEBP"
162
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -B build \
163
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
164
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
165
make -C build "-j$NPROCS"
166
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -B build-arm64 \
167
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
168
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
169
make -C build-arm64 "-j$NPROCS"
170
merge_binaries $(realpath build) $(realpath build-arm64)
171
make -C build install
172
cd ..
173
174
echo "Installing libzip..."
175
rm -fr "libzip-$LIBZIP"
176
tar xf "libzip-$LIBZIP.tar.gz"
177
cd "libzip-$LIBZIP"
178
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -B build \
179
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
180
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
181
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
182
cmake --build build --parallel
183
cmake --install build
184
cd ..
185
186
echo "Building FreeType without HarfBuzz..."
187
rm -fr "freetype-$FREETYPE"
188
tar xf "freetype-$FREETYPE.tar.gz"
189
cd "freetype-$FREETYPE"
190
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
191
cmake --build build --parallel
192
cmake --install build
193
cd ..
194
195
echo "Building HarfBuzz..."
196
rm -fr "harfbuzz-$HARFBUZZ"
197
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
198
cd "harfbuzz-$HARFBUZZ"
199
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build
200
cmake --build build --parallel
201
cmake --install build
202
cd ..
203
204
echo "Building FreeType with HarfBuzz..."
205
rm -fr "freetype-$FREETYPE"
206
tar xf "freetype-$FREETYPE.tar.gz"
207
cd "freetype-$FREETYPE"
208
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
209
cmake --build build --parallel
210
cmake --install build
211
cd ..
212
213
echo "Installing SDL..."
214
rm -fr "SDL3-$SDL3"
215
tar xf "SDL3-$SDL3.tar.gz"
216
cd "SDL3-$SDL3"
217
cmake -B build "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -DSDL_X11=OFF -DBUILD_SHARED_LIBS=ON
218
make -C build "-j$NPROCS"
219
make -C build install
220
cd ..
221
222
echo "Installing FFmpeg..."
223
rm -fr "ffmpeg-$FFMPEG"
224
tar xf "ffmpeg-$FFMPEG.tar.xz"
225
cd "ffmpeg-$FFMPEG"
226
mkdir build
227
cd build
228
LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
229
../configure --prefix="$INSTALLDIR" \
230
--enable-cross-compile --arch=x86_64 --cc='clang -arch x86_64' --cxx='clang++ -arch x86_64' --disable-x86asm \
231
--disable-all --disable-autodetect --disable-static --enable-shared \
232
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
233
--enable-audiotoolbox --enable-videotoolbox \
234
--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
235
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
236
--enable-protocol=file
237
make "-j$NPROCS"
238
cd ..
239
mkdir build-arm64
240
cd build-arm64
241
LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
242
../configure --prefix="$INSTALLDIR" \
243
--enable-cross-compile --arch=arm64 --cc='clang -arch arm64' --cxx='clang++ -arch arm64' --disable-x86asm \
244
--disable-all --disable-autodetect --disable-static --enable-shared \
245
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
246
--enable-audiotoolbox --enable-videotoolbox \
247
--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
248
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
249
--enable-protocol=file
250
make "-j$NPROCS"
251
cd ..
252
merge_binaries $(realpath build) $(realpath build-arm64)
253
cd build
254
make install
255
cd ../..
256
257
# MoltenVK already builds universal binaries, nothing special to do here.
258
echo "Installing MoltenVK..."
259
rm -fr "MoltenVK-${MOLTENVK}"
260
tar xf "v$MOLTENVK.tar.gz"
261
cd "MoltenVK-${MOLTENVK}"
262
./fetchDependencies --macos
263
make macos
264
cp Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib "$INSTALLDIR/lib/"
265
cd ..
266
267
echo "Installing Qt Base..."
268
rm -fr "qtbase-everywhere-src-$QT"
269
tar xf "qtbase-everywhere-src-$QT.tar.xz"
270
cd "qtbase-everywhere-src-$QT"
271
272
# Stop checkboxes in Fusion theme having such bright outlines.
273
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
274
275
# since we don't have a direct reference to QtSvg, it doesn't deployed directly from the main binary
276
# (only indirectly from iconengines), and the libqsvg.dylib imageformat plugin does not get deployed.
277
# We could run macdeployqt twice, but that's even more janky than patching it.
278
279
patch -u src/tools/macdeployqt/shared/shared.cpp <<EOF
280
--- shared.cpp
281
+++ shared.cpp
282
@@ -1122,14 +1122,8 @@
283
addPlugins(QStringLiteral("networkinformation"));
284
}
285
286
- // All image formats (svg if QtSvg is used)
287
- const bool usesSvg = deploymentInfo.containsModule("Svg", libInfix);
288
- addPlugins(QStringLiteral("imageformats"), [usesSvg](const QString &lib) {
289
- if (lib.contains(QStringLiteral("qsvg")) && !usesSvg)
290
- return false;
291
- return true;
292
- });
293
-
294
+ // All image formats
295
+ addPlugins(QStringLiteral("imageformats"));
296
addPlugins(QStringLiteral("iconengines"));
297
298
// Platforminputcontext plugins if QtGui is in use
299
EOF
300
301
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
302
make -C build "-j$NPROCS"
303
make -C build install
304
cd ..
305
306
echo "Installing Qt SVG..."
307
rm -fr "qtsvg-everywhere-src-$QT"
308
tar xf "qtsvg-everywhere-src-$QT.tar.xz"
309
cd "qtsvg-everywhere-src-$QT"
310
mkdir build
311
cd build
312
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}"
313
make "-j$NPROCS"
314
make install
315
cd ../..
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
328
echo "Installing Qt Tools..."
329
rm -fr "qttools-everywhere-src-$QT"
330
tar xf "qttools-everywhere-src-$QT.tar.xz"
331
cd "qttools-everywhere-src-$QT"
332
mkdir build
333
cd build
334
"$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
335
make "-j$NPROCS"
336
make install
337
cd ../..
338
339
echo "Installing Qt Translations..."
340
rm -fr "qttranslations-everywhere-src-$QT"
341
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
342
cd "qttranslations-everywhere-src-$QT"
343
mkdir build
344
cd build
345
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}"
346
make "-j$NPROCS"
347
make install
348
cd ../..
349
350
echo "Building shaderc..."
351
rm -fr "shaderc-$SHADERC"
352
tar xf "shaderc-$SHADERC.tar.gz"
353
cd "shaderc-$SHADERC"
354
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build
355
make -C build "-j$NPROCS"
356
make -C build install
357
cd ..
358
359
echo "Building SPIRV-Cross..."
360
cd SPIRV-Cross
361
rm -fr build
362
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
363
cmake --build build --parallel
364
cmake --install build
365
cd ..
366
367
echo "Building cpuinfo..."
368
rm -fr "cpuinfo-$CPUINFO"
369
tar xf "cpuinfo-$CPUINFO.tar.gz"
370
cd "cpuinfo-$CPUINFO"
371
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
372
make -C build "-j$NPROCS"
373
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
374
make -C build-arm64 "-j$NPROCS"
375
merge_binaries $(realpath build) $(realpath build-arm64)
376
make -C build install
377
cd ..
378
379
echo "Building discord-rpc..."
380
rm -fr "discord-rpc-$DISCORD_RPC"
381
tar xf "discord-rpc-$DISCORD_RPC.tar.gz"
382
cd "discord-rpc-$DISCORD_RPC"
383
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -B build
384
cmake --build build --parallel
385
cmake --install build
386
cd ..
387
388
echo "Building plutosvg..."
389
rm -fr "plutosvg-$PLUTOSVG"
390
tar xf "plutosvg-$PLUTOSVG.tar.gz"
391
cd "plutosvg-$PLUTOSVG"
392
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build
393
cmake --build build --parallel
394
cmake --install build
395
cd ..
396
397
echo "Building soundtouch..."
398
rm -fr "soundtouch-$SOUNDTOUCH"
399
tar xf "soundtouch-$SOUNDTOUCH.tar.gz"
400
cd "soundtouch-$SOUNDTOUCH"
401
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build
402
cmake --build build --parallel
403
cmake --install build
404
cd ..
405
406
echo "Cleaning up..."
407
cd ..
408
rm -rf deps-build
409
410