Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/scripts/deps/build-dependencies-linux.sh
7468 views
1
#!/usr/bin/env bash
2
3
# SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <[email protected]>
4
# SPDX-License-Identifier: CC-BY-NC-ND-4.0
5
#
6
# NOTE: In addition to the terms of CC-BY-NC-ND-4.0, you may not use this file to create
7
# packages or build recipes without explicit permission from the copyright holder.
8
#
9
10
set -e
11
12
if [ "$#" -lt 1 ]; then
13
echo "Syntax: $0 [-skip-download] [-skip-cleanup] [-only-download] <output directory>"
14
exit 1
15
fi
16
17
for arg in "$@"; do
18
if [ "$arg" == "-skip-download" ]; then
19
echo "Not downloading sources."
20
SKIP_DOWNLOAD=true
21
shift
22
elif [ "$arg" == "-skip-cleanup" ]; then
23
echo "Not removing build directory."
24
SKIP_CLEANUP=true
25
shift
26
elif [ "$arg" == "-only-download" ]; then
27
echo "Only downloading sources."
28
ONLY_DOWNLOAD=true
29
shift
30
fi
31
done
32
33
SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
34
NPROCS="$(getconf _NPROCESSORS_ONLN)"
35
INSTALLDIR="$1"
36
if [ "${INSTALLDIR:0:1}" != "/" ]; then
37
INSTALLDIR="$PWD/$INSTALLDIR"
38
fi
39
40
source "$SCRIPTDIR/versions"
41
42
mkdir -p deps-build
43
cd deps-build
44
45
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz" ]]; then
46
curl -C - -L \
47
-o "brotli-$BROTLI.tar.gz" "https://github.com/google/brotli/archive/refs/tags/v$BROTLI.tar.gz" \
48
-o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download" \
49
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
50
-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \
51
-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz" \
52
-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
53
-O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz" \
54
-o "zlib-ng-$ZLIBNG.tar.gz" "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/$ZLIBNG.tar.gz" \
55
-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
56
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
57
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
58
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
59
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
60
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
61
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtwayland-everywhere-src-$QT.tar.xz" \
62
-o "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz" "https://github.com/ianlancetaylor/libbacktrace/archive/$LIBBACKTRACE_COMMIT.tar.gz" \
63
-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \
64
-o "cpuinfo-$CPUINFO_COMMIT.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO_COMMIT.tar.gz" \
65
-o "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC_COMMIT.tar.gz" \
66
-o "plutosvg-$PLUTOSVG_COMMIT.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG_COMMIT.tar.gz" \
67
-o "shaderc-$SHADERC_COMMIT.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC_COMMIT.tar.gz" \
68
-o "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH_COMMIT.tar.gz"
69
fi
70
71
cat > SHASUMS <<EOF
72
$BROTLI_GZ_HASH brotli-$BROTLI.tar.gz
73
$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz
74
$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz
75
$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz
76
$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz
77
$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz
78
$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz
79
$ZLIBNG_GZ_HASH zlib-ng-$ZLIBNG.tar.gz
80
$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz
81
$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz
82
$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz
83
$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz
84
$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz
85
$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz
86
$QTWAYLAND_XZ_HASH qtwayland-everywhere-src-$QT.tar.xz
87
$LIBBACKTRACE_GZ_HASH libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz
88
$SDL3_GZ_HASH SDL3-$SDL3.tar.gz
89
$CPUINFO_GZ_HASH cpuinfo-$CPUINFO_COMMIT.tar.gz
90
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC_COMMIT.tar.gz
91
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG_COMMIT.tar.gz
92
$SHADERC_GZ_HASH shaderc-$SHADERC_COMMIT.tar.gz
93
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH_COMMIT.tar.gz
94
EOF
95
96
shasum -a 256 --check SHASUMS
97
98
# Have to clone with git, because it does version detection.
99
if [[ "$SKIP_DOWNLOAD" != true && ! -d "SPIRV-Cross" ]]; then
100
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS_TAG --depth 1
101
if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then
102
echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"
103
exit 1
104
fi
105
fi
106
107
# Only downloading sources?
108
if [ "$ONLY_DOWNLOAD" == true ]; then
109
exit 0
110
fi
111
112
# Prefer local deps for pkg-config search path.
113
if [[ -z "$PKG_CONFIG_PATH" ]]; then
114
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$INSTALLDIR/lib64/pkgconfig"
115
else
116
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$INSTALLDIR/lib64/pkgconfig:${PKG_CONFIG_PATH}"
117
fi
118
119
# Build zlib first because of the things that depend on it.
120
echo "Building zlib-ng..."
121
rm -fr "zlib-ng-$ZLIBNG"
122
tar xf "zlib-ng-$ZLIBNG.tar.gz"
123
cd "zlib-ng-$ZLIBNG"
124
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DZLIB_COMPAT=ON -DBUILD_TESTING=OFF -DWITH_BENCHMARK_APPS=OFF -DWITH_GTEST=OFF -B build -G Ninja
125
cmake --build build --parallel
126
ninja -C build install
127
cd ..
128
rm -fr "zlib-ng-$ZLIBNG"
129
130
echo "Building libbacktrace..."
131
rm -fr "libbacktrace-$LIBBACKTRACE_COMMIT"
132
tar xf "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz"
133
cd "libbacktrace-$LIBBACKTRACE_COMMIT"
134
CFLAGS="-fmacro-prefix-map=\"${PWD}\"=. -ffile-prefix-map=\"${PWD}\"=." ./configure --prefix="$INSTALLDIR" --with-pic
135
make
136
make install
137
cd ..
138
rm -fr "libbacktrace-$LIBBACKTRACE_COMMIT"
139
140
echo "Building libpng..."
141
rm -fr "libpng-$LIBPNG"
142
tar xf "libpng-$LIBPNG.tar.gz"
143
cd "libpng-$LIBPNG"
144
patch -p1 < "$SCRIPTDIR/libpng-1.6.54-apng.patch"
145
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_STATIC=OFF -DPNG_SHARED=ON -DPNG_TOOLS=OFF -B build -G Ninja
146
cmake --build build --parallel
147
ninja -C build install
148
cd ..
149
rm -fr "libpng-$LIBPNG"
150
151
echo "Building libjpeg..."
152
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
153
tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
154
cd "libjpeg-turbo-$LIBJPEGTURBO"
155
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build -G Ninja
156
cmake --build build --parallel
157
ninja -C build install
158
cd ..
159
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
160
161
echo "Building Zstandard..."
162
rm -fr "zstd-$ZSTD"
163
tar xf "zstd-$ZSTD.tar.gz"
164
cd "zstd-$ZSTD"
165
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_SHARED=ON -DZSTD_BUILD_STATIC=OFF -DZSTD_BUILD_PROGRAMS=OFF -B build -G Ninja build/cmake
166
cmake --build build --parallel
167
ninja -C build install
168
cd ..
169
rm -fr "zstd-$ZSTD"
170
171
echo "Building Brotli..."
172
rm -fr "brotli-$BROTLI"
173
tar xf "brotli-$BROTLI.tar.gz"
174
cd "brotli-$BROTLI"
175
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=OFF -DBROTLI_BUILD_TOOLS=OFF -DBROTLI_DISABLE_TESTS=ON -B build -G Ninja
176
ninja -C build install
177
cd ..
178
rm -fr "brotli-$BROTLI"
179
180
echo "Building WebP..."
181
rm -fr "libwebp-$LIBWEBP"
182
tar xf "libwebp-$LIBWEBP.tar.gz"
183
cd "libwebp-$LIBWEBP"
184
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -B build -G Ninja \
185
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
186
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
187
cmake --build build --parallel
188
ninja -C build install
189
cd ..
190
rm -fr "libwebp-$LIBWEBP"
191
192
echo "Building libzip..."
193
rm -fr "libzip-$LIBZIP"
194
tar xf "libzip-$LIBZIP.tar.gz"
195
cd "libzip-$LIBZIP"
196
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -B build -G Ninja \
197
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
198
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
199
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
200
cmake --build build --parallel
201
ninja -C build install
202
cd ..
203
rm -fr "libzip-$LIBZIP"
204
205
echo "Building FreeType..."
206
rm -fr "freetype-$FREETYPE"
207
tar xf "freetype-$FREETYPE.tar.gz"
208
cd "freetype-$FREETYPE"
209
patch -p1 < "$SCRIPTDIR/freetype-harfbuzz-soname.patch"
210
patch -p1 < "$SCRIPTDIR/freetype-static-brotli.patch"
211
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -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 -G Ninja
212
cmake --build build --parallel
213
ninja -C build install
214
cd ..
215
rm -fr "freetype-$FREETYPE"
216
217
echo "Building HarfBuzz..."
218
rm -fr "harfbuzz-$HARFBUZZ"
219
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
220
cd "harfbuzz-$HARFBUZZ"
221
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build -G Ninja
222
cmake --build build --parallel
223
ninja -C build install
224
cd ..
225
rm -fr "harfbuzz-$HARFBUZZ"
226
227
echo "Building SDL..."
228
rm -fr "SDL3-$SDL3"
229
tar xf "SDL3-$SDL3.tar.gz"
230
cd "SDL3-$SDL3"
231
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -G Ninja
232
cmake --build build --parallel
233
ninja -C build install
234
cd ..
235
rm -fr "SDL3-$SDL3"
236
237
# Couple notes:
238
# -fontconfig is needed otherwise Qt Widgets render only boxes.
239
# -qt-doubleconversion avoids a dependency on libdouble-conversion.
240
# ICU avoids pulling in a bunch of large libraries, and hopefully we can get away without it.
241
# OpenGL is needed to render window decorations in Wayland, apparently.
242
# Brotli is disabled as we static link it, and QtNetwork doesn't link with bbrotlicommon.
243
echo "Building Qt Base..."
244
rm -fr "qtbase-everywhere-src-$QT"
245
tar xf "qtbase-everywhere-src-$QT.tar.xz"
246
cd "qtbase-everywhere-src-$QT"
247
patch -p1 < "$SCRIPTDIR/qtbase-disable-pcre2-jit.patch"
248
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
249
mkdir build
250
cd build
251
../configure -prefix "$INSTALLDIR" -release -dbus-linked -fontconfig -qt-doubleconversion -ssl -openssl-runtime -opengl desktop -qpa xcb,wayland -xkbcommon -xcb -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_cups=OFF -DFEATURE_dbus=ON -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=ON -DFEATURE_gtk3=OFF -DFEATURE_brotli=OFF
252
cmake --build . --parallel
253
ninja install
254
cd ../../
255
rm -fr "qtbase-everywhere-src-$QT"
256
257
echo "Building Qt SVG..."
258
rm -fr "qtsvg-everywhere-src-$QT"
259
tar xf "qtsvg-everywhere-src-$QT.tar.xz"
260
cd "qtsvg-everywhere-src-$QT"
261
mkdir build
262
cd build
263
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
264
cmake --build . --parallel
265
ninja install
266
cd ../../
267
rm -fr "qtsvg-everywhere-src-$QT"
268
269
echo "Building Qt Image Formats..."
270
rm -fr "qtimageformats-everywhere-src-$QT"
271
tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
272
cd "qtimageformats-everywhere-src-$QT"
273
mkdir build
274
cd build
275
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_system_webp=ON
276
cmake --build . --parallel
277
ninja install
278
cd ../../
279
rm -fr "qtimageformats-everywhere-src-$QT"
280
281
echo "Building Qt Wayland..."
282
rm -fr "qtwayland-everywhere-src-$QT"
283
tar xf "qtwayland-everywhere-src-$QT.tar.xz"
284
cd "qtwayland-everywhere-src-$QT"
285
mkdir build
286
cd build
287
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
288
cmake --build . --parallel
289
ninja install
290
cd ../../
291
rm -fr "qtwayland-everywhere-src-$QT"
292
293
echo "Installing Qt Tools..."
294
rm -fr "qttools-everywhere-src-$QT"
295
tar xf "qttools-everywhere-src-$QT.tar.xz"
296
cd "qttools-everywhere-src-$QT"
297
patch -p1 < "$SCRIPTDIR/qttools-linguist-without-quick.patch"
298
patch -p1 < "$SCRIPTDIR/qttools-disable-clang.patch"
299
mkdir build
300
cd build
301
"$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=OFF
302
cmake --build . --parallel
303
ninja install
304
cd ../../
305
rm -fr "qttools-everywhere-src-$QT"
306
307
echo "Installing Qt Translations..."
308
rm -fr "qttranslations-everywhere-src-$QT"
309
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
310
cd "qttranslations-everywhere-src-$QT"
311
mkdir build
312
cd build
313
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
314
cmake --build . --parallel
315
ninja install
316
cd ../../
317
rm -fr "qttranslations-everywhere-src-$QT"
318
319
echo "Building shaderc..."
320
rm -fr "shaderc-$SHADERC_COMMIT"
321
tar xf "shaderc-$SHADERC_COMMIT.tar.gz"
322
cd "shaderc-$SHADERC_COMMIT"
323
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_EXECUTABLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja
324
cmake --build build --parallel
325
ninja -C build install
326
cd ..
327
rm -fr "shaderc-$SHADERC_COMMIT"
328
329
echo "Building SPIRV-Cross..."
330
cd SPIRV-Cross
331
rm -fr build
332
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -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 Ninja
333
cmake --build build --parallel
334
ninja -C build install
335
rm -fr build
336
cd ..
337
338
echo "Building cpuinfo..."
339
rm -fr "cpuinfo-$CPUINFO_COMMIT"
340
tar xf "cpuinfo-$CPUINFO_COMMIT.tar.gz"
341
cd "cpuinfo-$CPUINFO_COMMIT"
342
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -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 Ninja
343
cmake --build build --parallel
344
ninja -C build install
345
cd ..
346
rm -fr "cpuinfo-$CPUINFO_COMMIT"
347
348
echo "Building discord-rpc..."
349
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
350
tar xf "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz"
351
cd "discord-rpc-$DISCORD_RPC_COMMIT"
352
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -B build -G Ninja
353
cmake --build build --parallel
354
ninja -C build install
355
cd ..
356
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
357
358
echo "Building plutosvg..."
359
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
360
tar xf "plutosvg-$PLUTOSVG_COMMIT.tar.gz"
361
cd "plutosvg-$PLUTOSVG_COMMIT"
362
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja
363
cmake --build build --parallel
364
ninja -C build install
365
cd ..
366
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
367
368
echo "Building soundtouch..."
369
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
370
tar xf "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz"
371
cd "soundtouch-$SOUNDTOUCH_COMMIT"
372
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja
373
cmake --build build --parallel
374
ninja -C build install
375
cd ..
376
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
377
378
if [ "$SKIP_CLEANUP" != true ]; then
379
echo "Cleaning up..."
380
cd ..
381
rm -fr deps-build
382
fi
383
384