Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/scripts/deps/build-dependencies-linux.sh
4212 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 [-system-freetype] [-system-harfbuzz] [-system-libjpeg] [-system-libpng] [-system-libwebp] [-system-libzip] [-system-zlib] [-system-zstd] [-system-qt] [-skip-download] [-skip-cleanup] [-only-download] <output directory>"
14
exit 1
15
fi
16
17
for arg in "$@"; do
18
if [ "$arg" == "-system-freetype" ]; then
19
echo "Skipping building FreeType."
20
SKIP_FREETYPE=true
21
shift
22
elif [ "$arg" == "-system-harfbuzz" ]; then
23
echo "Skipping building HarfBuzz."
24
SKIP_HARFBUZZ=true
25
shift
26
elif [ "$arg" == "-system-libjpeg" ]; then
27
echo "Skipping building libjpeg."
28
SKIP_LIBJPEG=true
29
shift
30
elif [ "$arg" == "-system-libpng" ]; then
31
echo "Skipping building libpng."
32
SKIP_LIBPNG=true
33
shift
34
elif [ "$arg" == "-system-libwebp" ]; then
35
echo "Skipping building libwebp."
36
SKIP_LIBWEBP=true
37
shift
38
elif [ "$arg" == "-system-libzip" ]; then
39
echo "Skipping building libzip."
40
SKIP_LIBZIP=true
41
shift
42
elif [ "$arg" == "-system-zlib" ]; then
43
echo "Skipping building zlib-ng."
44
SKIP_ZLIBNG=true
45
shift
46
elif [ "$arg" == "-system-zstd" ]; then
47
echo "Skipping building zstd."
48
SKIP_ZSTD=true
49
shift
50
elif [ "$arg" == "-system-qt" ]; then
51
echo "Skipping building Qt."
52
SKIP_QT=true
53
shift
54
elif [ "$arg" == "-skip-download" ]; then
55
echo "Not downloading sources."
56
SKIP_DOWNLOAD=true
57
shift
58
elif [ "$arg" == "-skip-cleanup" ]; then
59
echo "Not removing build directory."
60
SKIP_CLEANUP=true
61
shift
62
elif [ "$arg" == "-only-download" ]; then
63
echo "Only downloading sources."
64
ONLY_DOWNLOAD=true
65
shift
66
fi
67
done
68
69
SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
70
NPROCS="$(getconf _NPROCESSORS_ONLN)"
71
INSTALLDIR="$1"
72
if [ "${INSTALLDIR:0:1}" != "/" ]; then
73
INSTALLDIR="$PWD/$INSTALLDIR"
74
fi
75
76
source "$SCRIPTDIR/versions"
77
78
mkdir -p deps-build
79
cd deps-build
80
81
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libbacktrace-$LIBBACKTRACE.tar.gz" ]]; then
82
curl -C - -L \
83
-o "libbacktrace-$LIBBACKTRACE.tar.gz" "https://github.com/ianlancetaylor/libbacktrace/archive/$LIBBACKTRACE.tar.gz" \
84
-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \
85
-o "cpuinfo-$CPUINFO.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO.tar.gz" \
86
-o "discord-rpc-$DISCORD_RPC.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC.tar.gz" \
87
-o "plutosvg-$PLUTOSVG.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG.tar.gz" \
88
-o "shaderc-$SHADERC.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC.tar.gz" \
89
-o "soundtouch-$SOUNDTOUCH.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH.tar.gz"
90
fi
91
92
cat > SHASUMS <<EOF
93
$LIBBACKTRACE_GZ_HASH libbacktrace-$LIBBACKTRACE.tar.gz
94
$SDL3_GZ_HASH SDL3-$SDL3.tar.gz
95
$CPUINFO_GZ_HASH cpuinfo-$CPUINFO.tar.gz
96
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC.tar.gz
97
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG.tar.gz
98
$SHADERC_GZ_HASH shaderc-$SHADERC.tar.gz
99
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH.tar.gz
100
EOF
101
102
if [ "$SKIP_FREETYPE" != true ]; then
103
if [[ "$SKIP_DOWNLOAD" != true && ! -f "freetype-$FREETYPE.tar.gz" ]]; then
104
curl -C - -L -o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download"
105
fi
106
cat >> SHASUMS <<EOF
107
$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz
108
EOF
109
fi
110
if [ "$SKIP_HARFBUZZ" != true ]; then
111
if [[ "$SKIP_DOWNLOAD" != true && ! -f "harfbuzz-$HARFBUZZ.tar.gz" ]]; then
112
curl -C - -L -o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz"
113
fi
114
cat >> SHASUMS <<EOF
115
$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz
116
EOF
117
fi
118
if [ "$SKIP_LIBJPEG" != true ]; then
119
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libjpeg-turbo-$LIBJPEGTURBO.tar.gz" ]]; then
120
curl -C - -L -O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
121
fi
122
cat >> SHASUMS <<EOF
123
$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz
124
EOF
125
fi
126
if [ "$SKIP_LIBPNG" != true ]; then
127
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libpng-$LIBPNG.tar.gz" ]]; then
128
curl -C - -L -O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz"
129
fi
130
cat >> SHASUMS <<EOF
131
$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz
132
EOF
133
fi
134
if [ "$SKIP_LIBWEBP" != true ]; then
135
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libwebp-$LIBWEBP.tar.gz" ]]; then
136
curl -C - -L -O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz"
137
fi
138
cat >> SHASUMS <<EOF
139
$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz
140
EOF
141
fi
142
if [ "$SKIP_LIBZIP" != true ]; then
143
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libzip-$LIBZIP.tar.gz" ]]; then
144
curl -C - -L -O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz"
145
fi
146
cat >> SHASUMS <<EOF
147
$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz
148
EOF
149
fi
150
if [ "$SKIP_ZLIBNG" != true ]; then
151
if [[ "$SKIP_DOWNLOAD" != true && ! -f "zlib-ng-$ZLIBNG.tar.gz" ]]; then
152
curl -C - -L -o "zlib-ng-$ZLIBNG.tar.gz" "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/$ZLIBNG.tar.gz"
153
fi
154
cat >> SHASUMS <<EOF
155
$ZLIBNG_GZ_HASH zlib-ng-$ZLIBNG.tar.gz
156
EOF
157
fi
158
if [ "$SKIP_ZSTD" != true ]; then
159
if [[ "$SKIP_DOWNLOAD" != true && ! -f "zstd-$ZSTD.tar.gz" ]]; then
160
curl -C - -L -O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz"
161
fi
162
cat >> SHASUMS <<EOF
163
$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz
164
EOF
165
fi
166
if [ "$SKIP_QT" != true ]; then
167
if [[ "$SKIP_DOWNLOAD" != true && ! -f "qtbase-everywhere-src-$QT.tar.xz" ]]; then
168
curl -C - -L \
169
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
170
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
171
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
172
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
173
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
174
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtwayland-everywhere-src-$QT.tar.xz"
175
fi
176
cat >> SHASUMS <<EOF
177
$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz
178
$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz
179
$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz
180
$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz
181
$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz
182
$QTWAYLAND_XZ_HASH qtwayland-everywhere-src-$QT.tar.xz
183
EOF
184
fi
185
186
shasum -a 256 --check SHASUMS
187
188
# Have to clone with git, because it does version detection.
189
if [[ "$SKIP_DOWNLOAD" != true && ! -d "SPIRV-Cross" ]]; then
190
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS --depth 1
191
if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then
192
echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"
193
exit 1
194
fi
195
fi
196
197
# Only downloading sources?
198
if [ "$ONLY_DOWNLOAD" == true ]; then
199
exit 0
200
fi
201
202
# Build zlib first because of the things that depend on it.
203
if [ "$SKIP_ZLIBNG" != true ]; then
204
echo "Building zlib-ng..."
205
rm -fr "zlib-ng-$ZLIBNG"
206
tar xf "zlib-ng-$ZLIBNG.tar.gz"
207
cd "zlib-ng-$ZLIBNG"
208
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DZLIB_COMPAT=ON -DZLIBNG_ENABLE_TESTS=OFF -DZLIB_ENABLE_TESTS=OFF -DWITH_GTEST=OFF -B build -G Ninja
209
cmake --build build --parallel
210
ninja -C build install
211
cd ..
212
fi
213
214
echo "Building libbacktrace..."
215
rm -fr "libbacktrace-$LIBBACKTRACE"
216
tar xf "libbacktrace-$LIBBACKTRACE.tar.gz"
217
cd "libbacktrace-$LIBBACKTRACE"
218
./configure --prefix="$INSTALLDIR" --with-pic
219
make
220
make install
221
cd ..
222
223
if [ "$SKIP_LIBPNG" != true ]; then
224
echo "Building libpng..."
225
rm -fr "libpng-$LIBPNG"
226
tar xf "libpng-$LIBPNG.tar.gz"
227
cd "libpng-$LIBPNG"
228
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
229
cmake --build build --parallel
230
ninja -C build install
231
cd ..
232
fi
233
234
if [ "$SKIP_LIBJPEG" != true ]; then
235
echo "Building libjpeg..."
236
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
237
tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
238
cd "libjpeg-turbo-$LIBJPEGTURBO"
239
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -B build -G Ninja
240
cmake --build build --parallel
241
ninja -C build install
242
cd ..
243
fi
244
245
if [ "$SKIP_ZSTD" != true ]; then
246
echo "Building Zstandard..."
247
rm -fr "zstd-$ZSTD"
248
tar xf "zstd-$ZSTD.tar.gz"
249
cd "zstd-$ZSTD"
250
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
251
cmake --build build --parallel
252
ninja -C build install
253
cd ..
254
fi
255
256
if [ "$SKIP_LIBWEBP" != true ]; then
257
echo "Building WebP..."
258
rm -fr "libwebp-$LIBWEBP"
259
tar xf "libwebp-$LIBWEBP.tar.gz"
260
cd "libwebp-$LIBWEBP"
261
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -B build -G Ninja \
262
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
263
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
264
cmake --build build --parallel
265
ninja -C build install
266
cd ..
267
fi
268
269
if [ "$SKIP_LIBZIP" != true ]; then
270
echo "Building libzip..."
271
rm -fr "libzip-$LIBZIP"
272
tar xf "libzip-$LIBZIP.tar.gz"
273
cd "libzip-$LIBZIP"
274
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -B build -G Ninja \
275
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
276
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
277
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
278
cmake --build build --parallel
279
ninja -C build install
280
cd ..
281
fi
282
283
if [ "$SKIP_FREETYPE" != true ]; then
284
if [ "$SKIP_HARFBUZZ" != true ]; then
285
echo "Building FreeType without HarfBuzz..."
286
rm -fr "freetype-$FREETYPE"
287
tar xf "freetype-$FREETYPE.tar.gz"
288
cd "freetype-$FREETYPE"
289
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_DISABLE_BROTLI=TRUE -DFT_DISABLE_HARFBUZZ=TRUE -B build -G Ninja
290
cmake --build build --parallel
291
ninja -C build install
292
cd ..
293
294
echo "Building HarfBuzz..."
295
rm -fr "harfbuzz-$HARFBUZZ"
296
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
297
cd "harfbuzz-$HARFBUZZ"
298
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
299
cmake --build build --parallel
300
ninja -C build install
301
cd ..
302
fi
303
304
echo "Building FreeType with HarfBuzz..."
305
rm -fr "freetype-$FREETYPE"
306
tar xf "freetype-$FREETYPE.tar.gz"
307
cd "freetype-$FREETYPE"
308
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_DISABLE_BROTLI=TRUE -DFT_REQUIRE_HARFBUZZ=TRUE -B build -G Ninja
309
cmake --build build --parallel
310
ninja -C build install
311
cd ..
312
fi
313
314
echo "Building SDL..."
315
rm -fr "SDL3-$SDL3"
316
tar xf "SDL3-$SDL3.tar.gz"
317
cd "SDL3-$SDL3"
318
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
319
cmake --build build --parallel
320
ninja -C build install
321
cd ..
322
323
if [ "$SKIP_QT" != true ]; then
324
# Couple notes:
325
# -fontconfig is needed otherwise Qt Widgets render only boxes.
326
# -qt-doubleconversion avoids a dependency on libdouble-conversion.
327
# ICU avoids pulling in a bunch of large libraries, and hopefully we can get away without it.
328
# OpenGL is needed to render window decorations in Wayland, apparently.
329
echo "Building Qt Base..."
330
rm -fr "qtbase-everywhere-src-$QT"
331
tar xf "qtbase-everywhere-src-$QT.tar.xz"
332
cd "qtbase-everywhere-src-$QT"
333
patch -p1 < "$SCRIPTDIR/qtbase-disable-pcre2-jit.patch"
334
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
335
mkdir build
336
cd build
337
../configure -prefix "$INSTALLDIR" -release -dbus-linked -fontconfig -qt-doubleconversion -ssl -openssl-runtime -opengl desktop -qpa xcb,wayland -xkbcommon -xcb -gtk -- -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
338
cmake --build . --parallel
339
ninja install
340
cd ../../
341
342
echo "Building Qt SVG..."
343
rm -fr "qtsvg-everywhere-src-$QT"
344
tar xf "qtsvg-everywhere-src-$QT.tar.xz"
345
cd "qtsvg-everywhere-src-$QT"
346
mkdir build
347
cd build
348
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
349
cmake --build . --parallel
350
ninja install
351
cd ../../
352
353
echo "Building Qt Image Formats..."
354
rm -fr "qtimageformats-everywhere-src-$QT"
355
tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
356
cd "qtimageformats-everywhere-src-$QT"
357
mkdir build
358
cd build
359
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_system_webp=ON
360
cmake --build . --parallel
361
ninja install
362
cd ../../
363
364
echo "Building Qt Wayland..."
365
rm -fr "qtwayland-everywhere-src-$QT"
366
tar xf "qtwayland-everywhere-src-$QT.tar.xz"
367
cd "qtwayland-everywhere-src-$QT"
368
mkdir build
369
cd build
370
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_wayland_server=OFF
371
cmake --build . --parallel
372
ninja install
373
cd ../../
374
375
echo "Installing Qt Tools..."
376
rm -fr "qttools-everywhere-src-$QT"
377
tar xf "qttools-everywhere-src-$QT.tar.xz"
378
cd "qttools-everywhere-src-$QT"
379
380
# Force disable clang scanning, it gets very confused.
381
patch -u configure.cmake <<EOF
382
--- configure.cmake
383
+++ configure.cmake
384
@@ -3,11 +3,11 @@
385
386
#### Tests
387
388
-qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)
389
+#qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)
390
391
-if(TARGET WrapLibClang::WrapLibClang)
392
- set(TEST_libclang "ON" CACHE BOOL "Required libclang version found." FORCE)
393
-endif()
394
+#if(TARGET WrapLibClang::WrapLibClang)
395
+# set(TEST_libclang "ON" CACHE BOOL "Required libclang version found." FORCE)
396
+#endif()
397
398
399
400
401
EOF
402
403
mkdir build
404
cd build
405
"$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
406
cmake --build . --parallel
407
ninja install
408
cd ../../
409
410
echo "Installing Qt Translations..."
411
rm -fr "qttranslations-everywhere-src-$QT"
412
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
413
cd "qttranslations-everywhere-src-$QT"
414
mkdir build
415
cd build
416
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
417
cmake --build . --parallel
418
ninja install
419
cd ../../
420
fi
421
422
echo "Building shaderc..."
423
rm -fr "shaderc-$SHADERC"
424
tar xf "shaderc-$SHADERC.tar.gz"
425
cd "shaderc-$SHADERC"
426
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja
427
cmake --build build --parallel
428
ninja -C build install
429
cd ..
430
431
echo "Building SPIRV-Cross..."
432
cd SPIRV-Cross
433
rm -fr build
434
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
435
cmake --build build --parallel
436
ninja -C build install
437
cd ..
438
439
echo "Building cpuinfo..."
440
rm -fr "cpuinfo-$CPUINFO"
441
tar xf "cpuinfo-$CPUINFO.tar.gz"
442
cd "cpuinfo-$CPUINFO"
443
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
444
cmake --build build --parallel
445
ninja -C build install
446
cd ..
447
448
echo "Building discord-rpc..."
449
rm -fr "discord-rpc-$DISCORD_RPC"
450
tar xf "discord-rpc-$DISCORD_RPC.tar.gz"
451
cd "discord-rpc-$DISCORD_RPC"
452
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -B build -G Ninja
453
cmake --build build --parallel
454
ninja -C build install
455
cd ..
456
457
echo "Building plutosvg..."
458
rm -fr "plutosvg-$PLUTOSVG"
459
tar xf "plutosvg-$PLUTOSVG.tar.gz"
460
cd "plutosvg-$PLUTOSVG"
461
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
462
cmake --build build --parallel
463
ninja -C build install
464
cd ..
465
466
echo "Building soundtouch..."
467
rm -fr "soundtouch-$SOUNDTOUCH"
468
tar xf "soundtouch-$SOUNDTOUCH.tar.gz"
469
cd "soundtouch-$SOUNDTOUCH"
470
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja
471
cmake --build build --parallel
472
ninja -C build install
473
cd ..
474
475
if [ "$SKIP_CLEANUP" != true ]; then
476
echo "Cleaning up..."
477
cd ..
478
rm -fr deps-build
479
fi
480
481