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