Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/scripts/deps/build-dependencies-mac.sh
4802 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=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_VERSION.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_COMMIT.tar.gz
83
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC_COMMIT.tar.gz
84
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG_COMMIT.tar.gz
85
$SHADERC_GZ_HASH shaderc-$SHADERC_COMMIT.tar.gz
86
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH_COMMIT.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_VERSION.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_COMMIT.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO_COMMIT.tar.gz" \
106
-o "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC_COMMIT.tar.gz" \
107
-o "plutosvg-$PLUTOSVG_COMMIT.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG_COMMIT.tar.gz" \
108
-o "shaderc-$SHADERC_COMMIT.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC_COMMIT.tar.gz" \
109
-o "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH_COMMIT.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_TAG --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
patch -p1 < "$SCRIPTDIR/libpng-1.6.50-apng.patch"
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 "Installing WebP..."
160
rm -fr "libwebp-$LIBWEBP"
161
tar xf "libwebp-$LIBWEBP.tar.gz"
162
cd "libwebp-$LIBWEBP"
163
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -B build \
164
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
165
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
166
make -C build "-j$NPROCS"
167
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -B build-arm64 \
168
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
169
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
170
make -C build-arm64 "-j$NPROCS"
171
merge_binaries $(realpath build) $(realpath build-arm64)
172
make -C build install
173
cd ..
174
175
echo "Installing libzip..."
176
rm -fr "libzip-$LIBZIP"
177
tar xf "libzip-$LIBZIP.tar.gz"
178
cd "libzip-$LIBZIP"
179
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -B build \
180
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
181
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
182
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
183
cmake --build build --parallel
184
cmake --install build
185
cd ..
186
187
echo "Building FreeType..."
188
rm -fr "freetype-$FREETYPE"
189
tar xf "freetype-$FREETYPE.tar.gz"
190
cd "freetype-$FREETYPE"
191
patch -p1 < "$SCRIPTDIR/freetype-harfbuzz-soname.patch"
192
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_DYNAMIC_HARFBUZZ=TRUE -B build
193
cmake --build build --parallel
194
cmake --install build
195
cd ..
196
197
echo "Building HarfBuzz..."
198
rm -fr "harfbuzz-$HARFBUZZ"
199
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
200
cd "harfbuzz-$HARFBUZZ"
201
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build
202
cmake --build build --parallel
203
cmake --install build
204
cd ..
205
206
echo "Installing SDL..."
207
rm -fr "SDL3-$SDL3"
208
tar xf "SDL3-$SDL3.tar.gz"
209
cd "SDL3-$SDL3"
210
cmake -B build "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -DSDL_X11=OFF -DBUILD_SHARED_LIBS=ON
211
make -C build "-j$NPROCS"
212
make -C build install
213
cd ..
214
215
echo "Installing FFmpeg..."
216
rm -fr "ffmpeg-$FFMPEG_VERSION"
217
tar xf "ffmpeg-$FFMPEG_VERSION.tar.xz"
218
cd "ffmpeg-$FFMPEG_VERSION"
219
mkdir build
220
cd build
221
LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
222
../configure --prefix="$INSTALLDIR" \
223
--enable-cross-compile --arch=x86_64 --cc='clang -arch x86_64' --cxx='clang++ -arch x86_64' --disable-x86asm \
224
--disable-all --disable-autodetect --disable-static --enable-shared \
225
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
226
--enable-audiotoolbox --enable-videotoolbox \
227
--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
228
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
229
--enable-protocol=file
230
make "-j$NPROCS"
231
cd ..
232
mkdir build-arm64
233
cd build-arm64
234
LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
235
../configure --prefix="$INSTALLDIR" \
236
--enable-cross-compile --arch=arm64 --cc='clang -arch arm64' --cxx='clang++ -arch arm64' --disable-x86asm \
237
--disable-all --disable-autodetect --disable-static --enable-shared \
238
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
239
--enable-audiotoolbox --enable-videotoolbox \
240
--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
241
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
242
--enable-protocol=file
243
make "-j$NPROCS"
244
cd ..
245
merge_binaries $(realpath build) $(realpath build-arm64)
246
cd build
247
make install
248
cd ../..
249
250
# MoltenVK already builds universal binaries, nothing special to do here.
251
echo "Installing MoltenVK..."
252
rm -fr "MoltenVK-${MOLTENVK}"
253
tar xf "v$MOLTENVK.tar.gz"
254
cd "MoltenVK-${MOLTENVK}"
255
./fetchDependencies --macos
256
make macos
257
cp Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib "$INSTALLDIR/lib/"
258
cd ..
259
260
echo "Installing Qt Base..."
261
rm -fr "qtbase-everywhere-src-$QT"
262
tar xf "qtbase-everywhere-src-$QT.tar.xz"
263
cd "qtbase-everywhere-src-$QT"
264
265
# Stop checkboxes in Fusion theme having such bright outlines.
266
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
267
268
# since we don't have a direct reference to QtSvg, it doesn't deployed directly from the main binary
269
# (only indirectly from iconengines), and the libqsvg.dylib imageformat plugin does not get deployed.
270
# We could run macdeployqt twice, but that's even more janky than patching it.
271
272
patch -u src/tools/macdeployqt/shared/shared.cpp <<EOF
273
--- shared.cpp
274
+++ shared.cpp
275
@@ -1122,14 +1122,8 @@
276
addPlugins(QStringLiteral("networkinformation"));
277
}
278
279
- // All image formats (svg if QtSvg is used)
280
- const bool usesSvg = deploymentInfo.containsModule("Svg", libInfix);
281
- addPlugins(QStringLiteral("imageformats"), [usesSvg](const QString &lib) {
282
- if (lib.contains(QStringLiteral("qsvg")) && !usesSvg)
283
- return false;
284
- return true;
285
- });
286
-
287
+ // All image formats
288
+ addPlugins(QStringLiteral("imageformats"));
289
addPlugins(QStringLiteral("iconengines"));
290
291
// Platforminputcontext plugins if QtGui is in use
292
EOF
293
294
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
295
make -C build "-j$NPROCS"
296
make -C build install
297
cd ..
298
299
echo "Installing Qt SVG..."
300
rm -fr "qtsvg-everywhere-src-$QT"
301
tar xf "qtsvg-everywhere-src-$QT.tar.xz"
302
cd "qtsvg-everywhere-src-$QT"
303
mkdir build
304
cd build
305
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}"
306
make "-j$NPROCS"
307
make install
308
cd ../..
309
310
echo "Installing Qt Image Formats..."
311
rm -fr "qtimageformats-everywhere-src-$QT"
312
tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
313
cd "qtimageformats-everywhere-src-$QT"
314
mkdir build
315
cd build
316
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}" -DFEATURE_system_webp=ON
317
make "-j$NPROCS"
318
make install
319
cd ../..
320
321
echo "Installing Qt Tools..."
322
rm -fr "qttools-everywhere-src-$QT"
323
tar xf "qttools-everywhere-src-$QT.tar.xz"
324
cd "qttools-everywhere-src-$QT"
325
mkdir build
326
cd build
327
"$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
328
make "-j$NPROCS"
329
make install
330
cd ../..
331
332
echo "Installing Qt Translations..."
333
rm -fr "qttranslations-everywhere-src-$QT"
334
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
335
cd "qttranslations-everywhere-src-$QT"
336
mkdir build
337
cd build
338
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}"
339
make "-j$NPROCS"
340
make install
341
cd ../..
342
343
echo "Building shaderc..."
344
rm -fr "shaderc-$SHADERC_COMMIT"
345
tar xf "shaderc-$SHADERC_COMMIT.tar.gz"
346
cd "shaderc-$SHADERC_COMMIT"
347
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build
348
make -C build "-j$NPROCS"
349
make -C build install
350
cd ..
351
352
echo "Building SPIRV-Cross..."
353
cd SPIRV-Cross
354
rm -fr build
355
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
356
cmake --build build --parallel
357
cmake --install build
358
cd ..
359
360
echo "Building cpuinfo..."
361
rm -fr "cpuinfo-$CPUINFO_COMMIT"
362
tar xf "cpuinfo-$CPUINFO_COMMIT.tar.gz"
363
cd "cpuinfo-$CPUINFO_COMMIT"
364
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
365
make -C build "-j$NPROCS"
366
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
367
make -C build-arm64 "-j$NPROCS"
368
merge_binaries $(realpath build) $(realpath build-arm64)
369
make -C build install
370
cd ..
371
372
echo "Building discord-rpc..."
373
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
374
tar xf "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz"
375
cd "discord-rpc-$DISCORD_RPC_COMMIT"
376
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -B build
377
cmake --build build --parallel
378
cmake --install build
379
cd ..
380
381
echo "Building plutosvg..."
382
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
383
tar xf "plutosvg-$PLUTOSVG_COMMIT.tar.gz"
384
cd "plutosvg-$PLUTOSVG_COMMIT"
385
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build
386
cmake --build build --parallel
387
cmake --install build
388
cd ..
389
390
echo "Building soundtouch..."
391
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
392
tar xf "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz"
393
cd "soundtouch-$SOUNDTOUCH_COMMIT"
394
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build
395
cmake --build build --parallel
396
cmake --install build
397
cd ..
398
399
echo "Cleaning up..."
400
cd ..
401
rm -rf deps-build
402
403