Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/scripts/deps/build-dependencies-linux-cross.sh
4802 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 4 ]; then
13
echo "Syntax: $0 [-skip-download] [-skip-cleanup] [-only-download] <host directory> <cross architecture> <cross chroot> <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
HOSTDIR="$1"
36
if [ "${HOSTDIR:0:1}" != "/" ]; then
37
HOSTDIR="$PWD/$HOSTDIR"
38
fi
39
CROSSARCH="$2"
40
SYSROOTDIR="$3"
41
if [ "${SYSROOTDIR:0:1}" != "/" ]; then
42
SYSROOTDIR="$PWD/$SYSROOTDIR"
43
fi
44
INSTALLDIR="$4"
45
if [ "${INSTALLDIR:0:1}" != "/" ]; then
46
INSTALLDIR="$PWD/$INSTALLDIR"
47
fi
48
TOOLCHAINFILE="$INSTALLDIR/toolchain.cmake"
49
CMAKE_COMMON=(
50
-DCMAKE_BUILD_TYPE=Release
51
-DCMAKE_TOOLCHAIN_FILE="$TOOLCHAINFILE"
52
-DCMAKE_PREFIX_PATH="$INSTALLDIR"
53
-DCMAKE_INSTALL_PREFIX="$INSTALLDIR"
54
)
55
56
# Determine architecture.
57
if [ "$CROSSARCH" == "arm64" ]; then
58
CROSSSYSARCH="aarch64"
59
CROSSTRIPLET="aarch64-linux-gnu"
60
CMAKEPROCESSOR="aarch64"
61
elif [ "$CROSSARCH" == "armhf" ]; then
62
CROSSSYSARCH="armhf"
63
CROSSTRIPLET="arm-linux-gnueabihf"
64
CMAKEPROCESSOR="armv7-a"
65
else
66
echo "Unknown cross arch $CROSSARCH"
67
exit 1
68
fi
69
70
source "$SCRIPTDIR/versions"
71
72
mkdir -p "${INSTALLDIR}"
73
mkdir -p deps-build
74
cd deps-build
75
76
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libbacktrace-$LIBBACKTRACE.tar.gz" ]]; then
77
curl -C - -L \
78
-o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download" \
79
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
80
-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \
81
-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz" \
82
-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
83
-O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz" \
84
-o "zlib-ng-$ZLIBNG.tar.gz" "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/$ZLIBNG.tar.gz" \
85
-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
86
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
87
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
88
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
89
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
90
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
91
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtwayland-everywhere-src-$QT.tar.xz" \
92
-o "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz" "https://github.com/ianlancetaylor/libbacktrace/archive/$LIBBACKTRACE_COMMIT.tar.gz" \
93
-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \
94
-o "cpuinfo-$CPUINFO_COMMIT.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO_COMMIT.tar.gz" \
95
-o "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC_COMMIT.tar.gz" \
96
-o "plutosvg-$PLUTOSVG_COMMIT.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG_COMMIT.tar.gz" \
97
-o "shaderc-$SHADERC_COMMIT.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC_COMMIT.tar.gz" \
98
-o "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH_COMMIT.tar.gz"
99
fi
100
101
cat > SHASUMS <<EOF
102
$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz
103
$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz
104
$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz
105
$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz
106
$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz
107
$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz
108
$ZLIBNG_GZ_HASH zlib-ng-$ZLIBNG.tar.gz
109
$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz
110
$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz
111
$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz
112
$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz
113
$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz
114
$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz
115
$QTWAYLAND_XZ_HASH qtwayland-everywhere-src-$QT.tar.xz
116
$LIBBACKTRACE_GZ_HASH libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz
117
$SDL3_GZ_HASH SDL3-$SDL3.tar.gz
118
$CPUINFO_GZ_HASH cpuinfo-$CPUINFO_COMMIT.tar.gz
119
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC_COMMIT.tar.gz
120
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG_COMMIT.tar.gz
121
$SHADERC_GZ_HASH shaderc-$SHADERC_COMMIT.tar.gz
122
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH_COMMIT.tar.gz
123
EOF
124
125
shasum -a 256 --check SHASUMS
126
127
# Have to clone with git, because it does version detection.
128
if [[ "$SKIP_DOWNLOAD" != true && ! -d "SPIRV-Cross" ]]; then
129
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS_TAG --depth 1
130
if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then
131
echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"
132
exit 1
133
fi
134
fi
135
136
# Only downloading sources?
137
if [ "$ONLY_DOWNLOAD" == true ]; then
138
exit 0
139
fi
140
141
# Stop pkg-config picking up host files.
142
export PKG_CONFIG_PATH=${SYSROOTDIR}/usr/lib/${CROSSTRIPLET}/pkgconfig:${SYSROOTDIR}/usr/lib/pkgconfig:${SYSROOTDIR}/usr/share/pkgconfig
143
export PKG_CONFIG_SYSROOT_DIR=${SYSROOTDIR}
144
145
# Generate cmake toolchain file.
146
cat > "$TOOLCHAINFILE" << EOF
147
set(CMAKE_CROSSCOMPILING TRUE)
148
set(CMAKE_SYSTEM_NAME Linux)
149
set(CMAKE_SYSTEM_PROCESSOR ${CMAKEPROCESSOR})
150
151
set(CMAKE_C_COMPILER "/usr/bin/${CROSSTRIPLET}-gcc")
152
set(CMAKE_C_COMPILER_TARGET "${CROSSTRIPLET}")
153
set(CMAKE_C_COMPILER_AR "/usr/bin/${CROSSTRIPLET}-ar")
154
set(CMAKE_C_COMPILER_RANLIB "/usr/bin/${CROSSTRIPLET}-ranlib")
155
156
set(CMAKE_CXX_COMPILER "/usr/bin/${CROSSTRIPLET}-g++")
157
set(CMAKE_CXX_COMPILER_TARGET "${CROSSTRIPLET}")
158
set(CMAKE_CXX_COMPILER_AR "/usr/bin/${CROSSTRIPLET}-ar")
159
set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/${CROSSTRIPLET}-ranlib")
160
161
set(CMAKE_FIND_ROOT_PATH "${INSTALLDIR};${SYSROOTDIR}")
162
set(CMAKE_SYSROOT "${SYSROOTDIR}")
163
164
set(CMAKE_PKG_CONFIG_PC_PATH "${PKG_CONFIG_PATH}")
165
set(CMAKE_PKG_CONFIG_SYSROOT_DIR "${PKG_CONFIG_SYSROOT_DIR}")
166
167
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
168
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
169
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
170
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
171
EOF
172
173
# Build zlib first because of the things that depend on it.
174
# Disabled because it currently causes crashes on armhf.
175
#echo "Building zlib-ng..."
176
#rm -fr "zlib-ng-$ZLIBNG"
177
#tar xf "zlib-ng-$ZLIBNG.tar.gz"
178
#cd "zlib-ng-$ZLIBNG"
179
#cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DZLIB_COMPAT=ON -DZLIBNG_ENABLE_TESTS=OFF -DZLIB_ENABLE_TESTS=OFF -DWITH_GTEST=OFF -B build -G Ninja
180
#cmake --build build --parallel
181
#ninja -C build install
182
#cd ..
183
184
# NOTE: Must be a shared library because otherwise aarch64 libgcc symbols are missing when building with clang.
185
echo "Building libbacktrace..."
186
rm -fr "libbacktrace-$LIBBACKTRACE_COMMIT"
187
tar xf "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz"
188
cd "libbacktrace-$LIBBACKTRACE_COMMIT"
189
CFLAGS="-fmacro-prefix-map=\"${PWD}\"=. -ffile-prefix-map=\"${PWD}\"=." ./configure --prefix="$INSTALLDIR" --build=x86_64-linux-gnu --host="${CROSSTRIPLET}" --with-pic --enable-shared --disable-static
190
make
191
make install
192
cd ..
193
194
echo "Building libpng..."
195
rm -fr "libpng-$LIBPNG"
196
tar xf "libpng-$LIBPNG.tar.gz"
197
cd "libpng-$LIBPNG"
198
patch -p1 < "$SCRIPTDIR/libpng-1.6.50-apng.patch"
199
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_STATIC=OFF -DPNG_SHARED=ON -DPNG_TOOLS=OFF -B build -G Ninja
200
cmake --build build --parallel
201
ninja -C build install
202
cd ..
203
204
echo "Building libjpeg..."
205
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
206
tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
207
cd "libjpeg-turbo-$LIBJPEGTURBO"
208
cmake "${CMAKE_COMMON[@]}" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -B build -G Ninja
209
cmake --build build --parallel
210
ninja -C build install
211
cd ..
212
213
echo "Building Zstandard..."
214
rm -fr "zstd-$ZSTD"
215
tar xf "zstd-$ZSTD.tar.gz"
216
cd "zstd-$ZSTD"
217
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_SHARED=ON -DZSTD_BUILD_STATIC=OFF -DZSTD_BUILD_PROGRAMS=OFF -B build -G Ninja build/cmake
218
cmake --build build --parallel
219
ninja -C build install
220
cd ..
221
222
echo "Building WebP..."
223
rm -fr "libwebp-$LIBWEBP"
224
tar xf "libwebp-$LIBWEBP.tar.gz"
225
cd "libwebp-$LIBWEBP"
226
cmake "${CMAKE_COMMON[@]}" -B build -G Ninja \
227
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
228
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
229
cmake --build build --parallel
230
ninja -C build install
231
cd ..
232
233
echo "Building libzip..."
234
rm -fr "libzip-$LIBZIP"
235
tar xf "libzip-$LIBZIP.tar.gz"
236
cd "libzip-$LIBZIP"
237
cmake "${CMAKE_COMMON[@]}" -B build -G Ninja \
238
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
239
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
240
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
241
cmake --build build --parallel
242
ninja -C build install
243
cd ..
244
245
echo "Building FreeType..."
246
rm -fr "freetype-$FREETYPE"
247
tar xf "freetype-$FREETYPE.tar.gz"
248
cd "freetype-$FREETYPE"
249
patch -p1 < "$SCRIPTDIR/freetype-harfbuzz-soname.patch"
250
cmake "${CMAKE_COMMON[@]}" -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 -G Ninja
251
cmake --build build --parallel
252
ninja -C build install
253
cd ..
254
255
echo "Building HarfBuzz..."
256
rm -fr "harfbuzz-$HARFBUZZ"
257
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
258
cd "harfbuzz-$HARFBUZZ"
259
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build -G Ninja
260
cmake --build build --parallel
261
ninja -C build install
262
cd ..
263
264
echo "Building SDL..."
265
rm -fr "SDL3-$SDL3"
266
tar xf "SDL3-$SDL3.tar.gz"
267
cd "SDL3-$SDL3"
268
cmake -B build "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -G Ninja
269
cmake --build build --parallel
270
ninja -C build install
271
cd ..
272
273
# Couple notes:
274
# -fontconfig is needed otherwise Qt Widgets render only boxes.
275
# -qt-doubleconversion avoids a dependency on libdouble-conversion.
276
# ICU avoids pulling in a bunch of large libraries, and hopefully we can get away without it.
277
# OpenGL is needed to render window decorations in Wayland, apparently.
278
# dbus-runtime and linked off to avoid a relocation error (different to host.. probably should change that).
279
echo "Building Qt Base..."
280
rm -fr "qtbase-everywhere-src-$QT"
281
tar xf "qtbase-everywhere-src-$QT.tar.xz"
282
cd "qtbase-everywhere-src-$QT"
283
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
284
mkdir build
285
cd build
286
../configure -prefix "$INSTALLDIR" -extprefix "$INSTALLDIR" -qt-host-path "$HOSTDIR" -release -dbus runtime -fontconfig -qt-doubleconversion -ssl -openssl-runtime -opengl desktop -qpa xcb,wayland -xkbcommon -xcb -gtk -- -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAINFILE" -DQT_GENERATE_SBOM=OFF -DFEATURE_cups=OFF -DFEATURE_dbus=ON -DFEATURE_dbus_linked=OFF -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
287
cmake --build . --parallel
288
ninja install
289
cd ../../
290
291
echo "Building Qt SVG..."
292
rm -fr "qtsvg-everywhere-src-$QT"
293
tar xf "qtsvg-everywhere-src-$QT.tar.xz"
294
cd "qtsvg-everywhere-src-$QT"
295
mkdir build
296
cd build
297
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
298
cmake --build . --parallel
299
ninja install
300
cd ../../
301
302
echo "Building Qt Image Formats..."
303
rm -fr "qtimageformats-everywhere-src-$QT"
304
tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
305
cd "qtimageformats-everywhere-src-$QT"
306
mkdir build
307
cd build
308
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_system_webp=ON
309
cmake --build . --parallel
310
ninja install
311
cd ../../
312
313
echo "Building Qt Wayland..."
314
rm -fr "qtwayland-everywhere-src-$QT"
315
tar xf "qtwayland-everywhere-src-$QT.tar.xz"
316
cd "qtwayland-everywhere-src-$QT"
317
mkdir build
318
cd build
319
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_wayland_server=OFF
320
cmake --build . --parallel
321
ninja install
322
cd ../../
323
324
echo "Installing Qt Tools..."
325
rm -fr "qttools-everywhere-src-$QT"
326
tar xf "qttools-everywhere-src-$QT.tar.xz"
327
cd "qttools-everywhere-src-$QT"
328
329
# Force disable clang scanning, it gets very confused.
330
patch -u configure.cmake <<EOF
331
--- configure.cmake
332
+++ configure.cmake
333
@@ -3,11 +3,11 @@
334
335
#### Tests
336
337
-qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)
338
+#qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)
339
340
-if(TARGET WrapLibClang::WrapLibClang)
341
- set(TEST_libclang "ON" CACHE BOOL "Required libclang version found." FORCE)
342
-endif()
343
+#if(TARGET WrapLibClang::WrapLibClang)
344
+# set(TEST_libclang "ON" CACHE BOOL "Required libclang version found." FORCE)
345
+#endif()
346
347
348
349
350
EOF
351
352
mkdir build
353
cd build
354
"$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
355
cmake --build . --parallel
356
ninja install
357
cd ../../
358
359
echo "Installing Qt Translations..."
360
rm -fr "qttranslations-everywhere-src-$QT"
361
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
362
cd "qttranslations-everywhere-src-$QT"
363
mkdir build
364
cd build
365
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
366
cmake --build . --parallel
367
ninja install
368
cd ../../
369
370
echo "Building shaderc..."
371
rm -fr "shaderc-$SHADERC_COMMIT"
372
tar xf "shaderc-$SHADERC_COMMIT.tar.gz"
373
cd "shaderc-$SHADERC_COMMIT"
374
cmake "${CMAKE_COMMON[@]}" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja
375
cmake --build build --parallel
376
ninja -C build install
377
cd ..
378
379
echo "Building SPIRV-Cross..."
380
cd SPIRV-Cross
381
rm -fr build
382
cmake "${CMAKE_COMMON[@]}" -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
383
cmake --build build --parallel
384
ninja -C build install
385
cd ..
386
387
echo "Building cpuinfo..."
388
rm -fr "cpuinfo-$CPUINFO_COMMIT"
389
tar xf "cpuinfo-$CPUINFO_COMMIT.tar.gz"
390
cd "cpuinfo-$CPUINFO_COMMIT"
391
cmake "${CMAKE_COMMON[@]}" -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
392
cmake --build build --parallel
393
ninja -C build install
394
cd ..
395
396
echo "Building discord-rpc..."
397
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
398
tar xf "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz"
399
cd "discord-rpc-$DISCORD_RPC_COMMIT"
400
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -B build -G Ninja
401
cmake --build build --parallel
402
ninja -C build install
403
cd ..
404
405
echo "Building plutosvg..."
406
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
407
tar xf "plutosvg-$PLUTOSVG_COMMIT.tar.gz"
408
cd "plutosvg-$PLUTOSVG_COMMIT"
409
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja
410
cmake --build build --parallel
411
ninja -C build install
412
cd ..
413
414
echo "Building soundtouch..."
415
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
416
tar xf "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz"
417
cd "soundtouch-$SOUNDTOUCH_COMMIT"
418
cmake "${CMAKE_COMMON[@]}" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja
419
cmake --build build --parallel
420
ninja -C build install
421
cd ..
422
423
if [ "$SKIP_CLEANUP" != true ]; then
424
echo "Cleaning up..."
425
cd ..
426
rm -fr deps-build
427
fi
428
429