Skip to content

Commit 8b8546a

Browse files
committed
cmake/ci: Allow gs runner builds without building all of pcsx2-qt
1 parent 8359346 commit 8b8546a

File tree

5 files changed

+219
-14
lines changed

5 files changed

+219
-14
lines changed
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
if [ "$#" -ne 1 ]; then
6+
echo "Syntax: $0 <output directory>"
7+
exit 1
8+
fi
9+
10+
SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
11+
NPROCS="$(getconf _NPROCESSORS_ONLN)"
12+
INSTALLDIR="$1"
13+
if [ "${INSTALLDIR:0:1}" != "/" ]; then
14+
INSTALLDIR="$PWD/$INSTALLDIR"
15+
fi
16+
17+
FREETYPE=2.14.1
18+
HARFBUZZ=12.0.0
19+
LIBBACKTRACE=ad106d5fdd5d960bd33fae1c48a351af567fd075
20+
LIBJPEGTURBO=3.1.2
21+
LIBPNG=1.6.50
22+
LIBWEBP=1.6.0
23+
SDL=SDL3-3.2.22
24+
QT=6.9.2
25+
QTAPNG=1.3.0
26+
LZ4=1.10.0
27+
ZSTD=1.5.7
28+
KDDOCKWIDGETS=2.3.0
29+
PLUTOVG=1.3.1
30+
PLUTOSVG=0.0.7
31+
32+
SHADERC=2025.3
33+
SHADERC_GLSLANG=efd24d75bcbc55620e759f6bf42c45a32abac5f8
34+
SHADERC_SPIRVHEADERS=2a611a970fdbc41ac2e3e328802aed9985352dca
35+
SHADERC_SPIRVTOOLS=33e02568181e3312f49a3cf33df470bf96ef293a
36+
37+
mkdir -p deps-build
38+
cd deps-build
39+
40+
cat > SHASUMS <<EOF
41+
32427e8c471ac095853212a37aef816c60b42052d4d9e48230bab3bdf2936ccc freetype-$FREETYPE.tar.xz
42+
c4a398539c3e0fdc9a82dfe7824d0438cae78c1e2124e7c6ada3dfa600cdb6c8 harfbuzz-$HARFBUZZ.tar.gz
43+
fd6f417fe9e3a071cf1424a5152d926a34c4a3c5070745470be6cf12a404ed79 $LIBBACKTRACE.zip
44+
4df396518620a7aa3651443e87d1b2862e4e88cad135a8b93423e01706232307 libpng-$LIBPNG.tar.xz
45+
e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564 libwebp-$LIBWEBP.tar.gz
46+
f29d00cbcee273c0a54f3f32f86bf5c595e8823a96b1d92a145aac40571ebfcc $SDL.tar.gz
47+
687ddc0c7cb128a3ea58e159b5129252537c27ede0c32a93f11f03127f0c0165 libpng-$LIBPNG-apng.patch.gz
48+
537512904744b35e232912055ccf8ec66d768639ff3abe5788d90d792ec5f48b lz4-$LZ4.tar.gz
49+
eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3 zstd-$ZSTD.tar.gz
50+
a8e4a25e5c2686fd36981e527ed05e451fcfc226bddf350f4e76181371190937 shaderc-$SHADERC.tar.gz
51+
9427deccbdf4bde6a269938df38c6bd75247493786a310d8d733a2c82065ef47 shaderc-glslang-$SHADERC_GLSLANG.tar.gz
52+
c2225a49c3d7efa5c4f4ce4a6b42081e6ea3daca376f3353d9d7c2722d77a28a shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz
53+
44d1005880c583fc00a0fb41c839214c68214b000ea8dcb54d352732fee600ff shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz
54+
bea672eb96ee36c2cbeb911b9bac66dfe989b3ad9a9943101e00aeb2df2aefdb plutovg-$PLUTOVG.tar.gz
55+
78561b571ac224030cdc450ca2986b4de915c2ba7616004a6d71a379bffd15f3 plutosvg-$PLUTOSVG.tar.gz
56+
EOF
57+
58+
curl -L \
59+
-o "freetype-$FREETYPE.tar.xz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.xz/download" \
60+
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
61+
-O "https://github.com/ianlancetaylor/libbacktrace/archive/$LIBBACKTRACE.zip" \
62+
-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.xz" \
63+
-O "https://download.sourceforge.net/libpng-apng/libpng-$LIBPNG-apng.patch.gz" \
64+
-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
65+
-O "https://github.com/lz4/lz4/releases/download/v$LZ4/lz4-$LZ4.tar.gz" \
66+
-O "https://libsdl.org/release/$SDL.tar.gz" \
67+
-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
68+
-o "shaderc-$SHADERC.tar.gz" "https://github.com/google/shaderc/archive/refs/tags/v$SHADERC.tar.gz" \
69+
-o "shaderc-glslang-$SHADERC_GLSLANG.tar.gz" "https://github.com/KhronosGroup/glslang/archive/$SHADERC_GLSLANG.tar.gz" \
70+
-o "shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Headers/archive/$SHADERC_SPIRVHEADERS.tar.gz" \
71+
-o "shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Tools/archive/$SHADERC_SPIRVTOOLS.tar.gz" \
72+
-o "plutovg-$PLUTOVG.tar.gz" "https://github.com/sammycage/plutovg/archive/v$PLUTOVG.tar.gz" \
73+
-o "plutosvg-$PLUTOSVG.tar.gz" "https://github.com/sammycage/plutosvg/archive/v$PLUTOSVG.tar.gz"
74+
75+
shasum -a 256 --check SHASUMS
76+
77+
echo "Building libbacktrace..."
78+
rm -fr "libbacktrace-$LIBBACKTRACE"
79+
unzip "$LIBBACKTRACE.zip"
80+
cd "libbacktrace-$LIBBACKTRACE"
81+
./configure --prefix="$INSTALLDIR"
82+
make
83+
make install
84+
cd ..
85+
86+
echo "Building libpng..."
87+
rm -fr "libpng-$LIBPNG"
88+
tar xf "libpng-$LIBPNG.tar.xz"
89+
gunzip -d -f "libpng-$LIBPNG-apng.patch.gz"
90+
cd "libpng-$LIBPNG"
91+
patch -p1 < "../libpng-$LIBPNG-apng.patch"
92+
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_STATIC=OFF -DPNG_SHARED=ON -DPNG_TOOLS=OFF -B build -G Ninja
93+
cmake --build build --parallel
94+
ninja -C build install
95+
cd ..
96+
97+
echo "Building LZ4..."
98+
rm -fr "lz4-$LZ4"
99+
tar xf "lz4-$LZ4.tar.gz"
100+
cd "lz4-$LZ4"
101+
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DLZ4_BUILD_CLI=OFF -DLZ4_BUILD_LEGACY_LZ4C=OFF -B build-dir -G Ninja build/cmake
102+
cmake --build build-dir --parallel
103+
ninja -C build-dir install
104+
cd ..
105+
106+
echo "Building Zstandard..."
107+
rm -fr "zstd-$ZSTD"
108+
tar xf "zstd-$ZSTD.tar.gz"
109+
cd "zstd-$ZSTD"
110+
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
111+
cmake --build build --parallel
112+
ninja -C build install
113+
cd ..
114+
115+
echo "Building FreeType without HarfBuzz..."
116+
rm -fr "freetype-$FREETYPE"
117+
tar xf "freetype-$FREETYPE.tar.xz"
118+
cd "freetype-$FREETYPE"
119+
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
120+
cmake --build build --parallel
121+
ninja -C build install
122+
cd ..
123+
124+
echo "Building HarfBuzz..."
125+
rm -fr "harfbuzz-$HARFBUZZ"
126+
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
127+
cd "harfbuzz-$HARFBUZZ"
128+
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -DHB_HAVE_FREETYPE=ON -B build -G Ninja
129+
cmake --build build --parallel
130+
ninja -C build install
131+
cd ..
132+
133+
echo "Building WebP..."
134+
rm -fr "libwebp-$LIBWEBP"
135+
tar xf "libwebp-$LIBWEBP.tar.gz"
136+
cd "libwebp-$LIBWEBP"
137+
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -B build -G Ninja \
138+
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
139+
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
140+
cmake --build build --parallel
141+
ninja -C build install
142+
cd ..
143+
144+
echo "Building FreeType with HarfBuzz..."
145+
rm -fr "freetype-$FREETYPE"
146+
tar xf "freetype-$FREETYPE.tar.xz"
147+
cd "freetype-$FREETYPE"
148+
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
149+
cmake --build build --parallel
150+
ninja -C build install
151+
cd ..
152+
153+
echo "Building SDL..."
154+
rm -fr "$SDL"
155+
tar xf "$SDL.tar.gz"
156+
cd "$SDL"
157+
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 -G Ninja
158+
cmake --build build --parallel
159+
ninja -C build install
160+
cd ..
161+
162+
echo "Building PlutoVG..."
163+
rm -fr "plutovg-$PLUTOVG"
164+
tar xf "plutovg-$PLUTOVG.tar.gz"
165+
cd "plutovg-$PLUTOVG"
166+
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DPLUTOVG_BUILD_EXAMPLES=OFF -B build -G Ninja
167+
cmake --build build --parallel
168+
ninja -C build install
169+
cd ..
170+
171+
echo "Building PlutoSVG..."
172+
rm -fr "plutosvg-$PLUTOSVG"
173+
tar xf "plutosvg-$PLUTOSVG.tar.gz"
174+
cd "plutosvg-$PLUTOSVG"
175+
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
176+
cmake --build build --parallel
177+
ninja -C build install
178+
cd ..
179+
180+
echo "Building shaderc..."
181+
rm -fr "shaderc-$SHADERC"
182+
tar xf "shaderc-$SHADERC.tar.gz"
183+
cd "shaderc-$SHADERC"
184+
cd third_party
185+
tar xf "../../shaderc-glslang-$SHADERC_GLSLANG.tar.gz"
186+
mv "glslang-$SHADERC_GLSLANG" "glslang"
187+
tar xf "../../shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz"
188+
mv "SPIRV-Headers-$SHADERC_SPIRVHEADERS" "spirv-headers"
189+
tar xf "../../shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz"
190+
mv "SPIRV-Tools-$SHADERC_SPIRVTOOLS" "spirv-tools"
191+
cd ..
192+
patch -p1 < "$SCRIPTDIR/../common/shaderc-changes.patch"
193+
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
194+
cmake --build build --parallel
195+
ninja -C build install
196+
cd ..
197+
198+
echo "Cleaning up..."
199+
cd ..
200+
rm -r deps-build

CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ add_subdirectory(common)
4747

4848
# make pcsx2
4949
add_subdirectory(pcsx2)
50-
add_subdirectory(pcsx2-qt)
50+
51+
if(ENABLE_QT_UI)
52+
add_subdirectory(pcsx2-qt)
53+
endif()
5154

5255
# Updater is Windows only for now.
5356
if (WIN32)

cmake/BuildParameters.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ include(GNUInstallDirs)
77
# Misc option
88
#-------------------------------------------------------------------------------
99
option(ENABLE_TESTS "Enables building the unit tests" ON)
10+
option(ENABLE_QT_UI "Enables building the PCSX2 Qt interface." ON)
1011
option(ENABLE_GSRUNNER "Enables building the GSRunner by default. It can still be built with `make pcsx2-gsrunner` otherwise." OFF)
1112
option(LTO_PCSX2_CORE "Enable LTO/IPO/LTCG on the subset of pcsx2 that benefits most from it but not anything else")
1213
option(USE_VTUNE "Plug VTUNE to profile GS JIT.")

cmake/SearchForStuff.cmake

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,21 @@ disable_compiler_warnings_for_target(cubeb)
107107
disable_compiler_warnings_for_target(speex)
108108

109109
# Find the Qt components that we need.
110-
find_package(Qt6 6.7.3 COMPONENTS CoreTools Core GuiTools Gui WidgetsTools Widgets LinguistTools REQUIRED)
110+
if(ENABLE_QT_UI)
111+
find_package(Qt6 6.7.3 COMPONENTS CoreTools Core GuiTools Gui WidgetsTools Widgets LinguistTools REQUIRED)
111112

112-
if(WIN32)
113-
add_subdirectory(3rdparty/rainterface EXCLUDE_FROM_ALL)
113+
if(WIN32)
114+
add_subdirectory(3rdparty/rainterface EXCLUDE_FROM_ALL)
115+
endif()
116+
117+
# The docking system for the debugger.
118+
find_package(KDDockWidgets-qt6 2.0.0 REQUIRED)
119+
# Add an extra include path to work around a broken include directive.
120+
# TODO: Remove this the next time we update KDDockWidgets.
121+
get_target_property(KDDOCKWIDGETS_INCLUDE_DIRECTORY KDAB::kddockwidgets INTERFACE_INCLUDE_DIRECTORIES)
122+
target_include_directories(KDAB::kddockwidgets INTERFACE
123+
${KDDOCKWIDGETS_INCLUDE_DIRECTORY}/kddockwidgets
124+
)
114125
endif()
115126

116127
# Demangler for the debugger.
@@ -119,15 +130,6 @@ add_subdirectory(3rdparty/demangler EXCLUDE_FROM_ALL)
119130
# Symbol table parser.
120131
add_subdirectory(3rdparty/ccc EXCLUDE_FROM_ALL)
121132

122-
# The docking system for the debugger.
123-
find_package(KDDockWidgets-qt6 2.0.0 REQUIRED)
124-
# Add an extra include path to work around a broken include directive.
125-
# TODO: Remove this the next time we update KDDockWidgets.
126-
get_target_property(KDDOCKWIDGETS_INCLUDE_DIRECTORY KDAB::kddockwidgets INTERFACE_INCLUDE_DIRECTORIES)
127-
target_include_directories(KDAB::kddockwidgets INTERFACE
128-
${KDDOCKWIDGETS_INCLUDE_DIRECTORY}/kddockwidgets
129-
)
130-
131133
# Architecture-specific.
132134
if(_M_X86)
133135
add_subdirectory(3rdparty/zydis EXCLUDE_FROM_ALL)

pcsx2-gsrunner/Main.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949

5050
// Down here because X11 has a lot of defines that can conflict
5151
#if defined(__linux__)
52-
#include <SDL2/SDL.h>
5352
#include <X11/Xlib.h>
5453
#include <X11/Xutil.h>
5554
#include <sys/select.h>

0 commit comments

Comments
 (0)