1 |
commit: 87f15c596ca134db6715ce4d3b4f543917e560cd |
2 |
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Sep 22 22:58:27 2022 +0000 |
4 |
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Sep 23 00:27:16 2022 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=87f15c59 |
7 |
|
8 |
games-emulation/pcsx2: add 1.7.3329 |
9 |
|
10 |
Meant to do this for a while given 1.6.0 is getting very old and is |
11 |
32bit-only (many users end up going with -9999 to handle this), but |
12 |
upstream kept doing major changes making this perhaps too experimental. |
13 |
Seems to have settled down a bit, so trying now. |
14 |
|
15 |
Many changes, so please report if anything off. |
16 |
|
17 |
For some notable changes from current -9999 ebuild: |
18 |
- EAPI7->8 |
19 |
- add machinery to keep 1.7.x and -9999 ebuilds in sync |
20 |
- switch to patches for unbundling, 9999 may break more often but |
21 |
there will now be a known-working 1.7.x release to fallback on |
22 |
- postinst elog to explain 1.7.x model a bit + warn |
23 |
- update LICENSE to account for hopefully all files and 3rdparty/* use |
24 |
- add IUSE=qt6 early support, doesn't support PACKAGE_MODE so this |
25 |
requires a few workarounds |
26 |
- add IUSE=wayland with untested runtime (build system would need |
27 |
updates if wanted pure X-less) |
28 |
- add IUSE=vulkan (considered IUSE=opengl too, esp if using vulkan, |
29 |
but code/build is too tied with opengl+egl) |
30 |
- pass -fno-strict-aliasing with USE=vulkan for glslang wrt bug #858374 |
31 |
- depend on >=libsdl2-2.0.22, not /necessary/ but the Qt build requests |
32 |
this minimum version rather than gtk's .12 for some reason |
33 |
- fix tests (they weren't being built/ran, low coverage either way) |
34 |
- use -DARCH_FLAG to pass minimum required -msse4.1 rather than rely |
35 |
on -DDISABLE_ADVANCED_SIMD which still pass more than necessary |
36 |
- disable WX_vs_SDL check rather than pass -DSDL2_API, see wx-vs-sdl |
37 |
patch for details |
38 |
- drop ld.gold workaround, likely still broken but not really |
39 |
supporting gold anymore (please don't use it, esp. system-wide) |
40 |
- drop imgui submodule, is now hard-bundled as non-submodule and makes |
41 |
little sense to unbundle because of the way it's setup |
42 |
- drop unused alsa-lib(alsa is provided by external cubeb), libXext + |
43 |
libICE (checked but unused, okay if missing), and libxml2 |
44 |
- replace freetype by harfbuzz, albeit while it checks and tries to |
45 |
link with harfbuzz it's technically unused (same for libsamplerate) |
46 |
|
47 |
This also drops x86 keyword, it may be possible to make it work but |
48 |
between the CMakeLists current FATAL_ERROR if not x86_64 (thus -* in |
49 |
KEYWORDS), various use of migrated-from-x86 asm, and min req of sse4.1 |
50 |
leaving out many cpus, this doesn't leave real room for non-x86_64. |
51 |
|
52 |
CMake Error at cmake/BuildParameters.cmake:152 (message): |
53 |
Unsupported architecture: i386 |
54 |
|
55 |
Users of -9999 are encouraged to switch to 1.7.x to get normal |
56 |
updates and not be at the forefront of every new issues (9999 |
57 |
ebuild will mostly only be checked when doing new 1.7.x releases |
58 |
unless get a report). |
59 |
|
60 |
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org> |
61 |
|
62 |
games-emulation/pcsx2/Manifest | 3 + |
63 |
.../pcsx2/files/pcsx2-1.7.3329-clang16.patch | 19 ++ |
64 |
.../pcsx2/files/pcsx2-1.7.3329-lto.patch | 21 +++ |
65 |
.../pcsx2/files/pcsx2-1.7.3329-musl.patch | 9 + |
66 |
.../pcsx2/files/pcsx2-1.7.3329-qt6.patch | 10 ++ |
67 |
.../pcsx2/files/pcsx2-1.7.3329-unbundle.patch | 41 +++++ |
68 |
.../pcsx2/files/pcsx2-1.7.3329-wx-vs-sdl.patch | 9 + |
69 |
games-emulation/pcsx2/metadata.xml | 4 + |
70 |
games-emulation/pcsx2/pcsx2-1.7.3329.ebuild | 198 +++++++++++++++++++++ |
71 |
9 files changed, 314 insertions(+) |
72 |
|
73 |
diff --git a/games-emulation/pcsx2/Manifest b/games-emulation/pcsx2/Manifest |
74 |
index bb30d90e594a..3a8dfeb3dde4 100644 |
75 |
--- a/games-emulation/pcsx2/Manifest |
76 |
+++ b/games-emulation/pcsx2/Manifest |
77 |
@@ -1 +1,4 @@ |
78 |
DIST pcsx2-1.6.0.tar.gz 17963332 BLAKE2B d1370fd089e1f8716a3365b9f499fef9418c4a9464e701cf0dbac8296cf59a2c6fc9b85ed680c514d8128da7b5c47aa8a067d48cac9eb0482ef2ba5f9234e60e SHA512 0a3e01a25384719fc72b636a1e9cf1cd966d0c978c1c3adfb46d6b3f76f43a25f90ef63d27a1d8092cdf444c5dc7560ce807ca81908d11ade9715e7eaaad6253 |
79 |
+DIST pcsx2-1.7.3329.tar.gz 19379924 BLAKE2B ec1313d97ab9f8bb5c735e73a3174071ccbd8499857835145dcd057f96cf51b60f3677a64c155916e5b6d33960d3e0d8c300714b6149ce4326e747e672c97406 SHA512 cfdd129c93e04f3ddc0a685483683cf5d4c239f9e7a059fd838ebe6cc8c2f3f819c26f45a8fe2a256030fdbd6273599d6e95813980eafbd301dac27689c2182a |
80 |
+DIST pcsx2-glslang-c9706bdda0.tar.gz 3433325 BLAKE2B f2449a6c8b05e47367164d09036ae2302f0f28ec83c2e2f401426f52fbd4edf55f717f01eea2cbfe7554e1004b89ffdebc34ec21a95809fcbc719f69e65e8487 SHA512 5ff0902e95592525b2671788bf27717c85d0876b31e96374eff5128f9bf7caf93bb636e4d5e1916a5d641715a780172308403bd49305d9a07cf66358d7e6407c |
81 |
+DIST pcsx2-vulkan-headers-9f4c61a314.tar.gz 1554220 BLAKE2B 7f7fa093e8af30919dd743768e6d882fa40800fecedf1183a45568dbb81207ffdf9eed1beadba98160c61bac89a24182794a601a2dce0c91cf54e16d0080cb69 SHA512 8b5fa5bcf6bd8ae5fb44000e4b842d86c014e9d8dae9bff988f86ec359fc27db3f71dc96253ceb2f31da4db41a6585034bb185f68da5446e91293bb0c2bbf993 |
82 |
|
83 |
diff --git a/games-emulation/pcsx2/files/pcsx2-1.7.3329-clang16.patch b/games-emulation/pcsx2/files/pcsx2-1.7.3329-clang16.patch |
84 |
new file mode 100644 |
85 |
index 000000000000..331101ed6a1c |
86 |
--- /dev/null |
87 |
+++ b/games-emulation/pcsx2/files/pcsx2-1.7.3329-clang16.patch |
88 |
@@ -0,0 +1,19 @@ |
89 |
+https://bugs.gentoo.org/870412 |
90 |
+--- a/3rdparty/cpuinfo/src/api.c |
91 |
++++ b/3rdparty/cpuinfo/src/api.c |
92 |
+@@ -78 +78 @@ |
93 |
+-const struct cpuinfo_uarch_info* cpuinfo_get_uarchs() { |
94 |
++const struct cpuinfo_uarch_info* cpuinfo_get_uarchs(void) { |
95 |
+--- a/cmake/FindPCAP.cmake |
96 |
++++ b/cmake/FindPCAP.cmake |
97 |
+@@ -47 +47 @@ |
98 |
+-check_c_source_compiles("int main() { return 0; }" PCAP_LINKS_SOLO) |
99 |
++check_c_source_compiles("int main(void) { return 0; }" PCAP_LINKS_SOLO) |
100 |
+@@ -55 +55 @@ |
101 |
+- check_c_source_compiles("int main() { return 0; }" PCAP_NEEDS_THREADS) |
102 |
++ check_c_source_compiles("int main(void) { return 0; }" PCAP_NEEDS_THREADS) |
103 |
+--- a/tests/ctest/CMakeLists.txt |
104 |
++++ b/tests/ctest/CMakeLists.txt |
105 |
+@@ -20 +20 @@ |
106 |
+- int main() { |
107 |
++ int main(void) { |
108 |
|
109 |
diff --git a/games-emulation/pcsx2/files/pcsx2-1.7.3329-lto.patch b/games-emulation/pcsx2/files/pcsx2-1.7.3329-lto.patch |
110 |
new file mode 100644 |
111 |
index 000000000000..1047105d646a |
112 |
--- /dev/null |
113 |
+++ b/games-emulation/pcsx2/files/pcsx2-1.7.3329-lto.patch |
114 |
@@ -0,0 +1,21 @@ |
115 |
+Lazy fix for -Werror=odr and don't rely on the CMAKE macro to |
116 |
+pass -fno-lto to the problematic FastJmp.cpp source with lto. |
117 |
+--- a/common/CMakeLists.txt |
118 |
++++ b/common/CMakeLists.txt |
119 |
+@@ -268,3 +268,3 @@ |
120 |
+ |
121 |
+-if (USE_GCC AND CMAKE_INTERPROCEDURAL_OPTIMIZATION) |
122 |
++if (USE_GCC) |
123 |
+ # GCC LTO doesn't work with asm statements |
124 |
+--- a/pcsx2/PAD/Linux/Device.h |
125 |
++++ b/pcsx2/PAD/Linux/Device.h |
126 |
+@@ -31,3 +31,3 @@ |
127 |
+ |
128 |
+-enum DeviceType |
129 |
++enum PADDeviceType |
130 |
+ { |
131 |
+@@ -101,3 +101,3 @@ |
132 |
+ DeviceAPI api; |
133 |
+- DeviceType type; |
134 |
++ PADDeviceType type; |
135 |
+ |
136 |
|
137 |
diff --git a/games-emulation/pcsx2/files/pcsx2-1.7.3329-musl.patch b/games-emulation/pcsx2/files/pcsx2-1.7.3329-musl.patch |
138 |
new file mode 100644 |
139 |
index 000000000000..95d2ff38a8c2 |
140 |
--- /dev/null |
141 |
+++ b/games-emulation/pcsx2/files/pcsx2-1.7.3329-musl.patch |
142 |
@@ -0,0 +1,9 @@ |
143 |
+--- a/pcsx2/USB/qemu-usb/iov.h |
144 |
++++ b/pcsx2/USB/qemu-usb/iov.h |
145 |
+@@ -17,5 +17,5 @@ |
146 |
+ #define IOV_H |
147 |
+ |
148 |
+-#if !defined(_BITS_UIO_H) && !defined(__iovec_defined) /* /usr/include/bits/uio.h */ |
149 |
++#if !defined(_BITS_UIO_H) && !defined(__iovec_defined) && !defined(__DEFINED_struct_iovec) |
150 |
+ struct iovec |
151 |
+ { |
152 |
|
153 |
diff --git a/games-emulation/pcsx2/files/pcsx2-1.7.3329-qt6.patch b/games-emulation/pcsx2/files/pcsx2-1.7.3329-qt6.patch |
154 |
new file mode 100644 |
155 |
index 000000000000..9ef82985dc99 |
156 |
--- /dev/null |
157 |
+++ b/games-emulation/pcsx2/files/pcsx2-1.7.3329-qt6.patch |
158 |
@@ -0,0 +1,10 @@ |
159 |
+https://github.com/PCSX2/pcsx2/commit/6386be09c2e disabled PACKAGE_MODE |
160 |
+for reasons that make no sense as far as installing from an ebuild goes. |
161 |
+ |
162 |
+Skip the error and handle the rest from the ebuild. |
163 |
+--- a/pcsx2-qt/CMakeLists.txt |
164 |
++++ b/pcsx2-qt/CMakeLists.txt |
165 |
+@@ -7,3 +7,2 @@ |
166 |
+ if (PACKAGE_MODE) |
167 |
+- message(FATAL_ERROR "Package mode is not supported for Qt builds.") |
168 |
+ else() |
169 |
|
170 |
diff --git a/games-emulation/pcsx2/files/pcsx2-1.7.3329-unbundle.patch b/games-emulation/pcsx2/files/pcsx2-1.7.3329-unbundle.patch |
171 |
new file mode 100644 |
172 |
index 000000000000..450329522183 |
173 |
--- /dev/null |
174 |
+++ b/games-emulation/pcsx2/files/pcsx2-1.7.3329-unbundle.patch |
175 |
@@ -0,0 +1,41 @@ |
176 |
+Adjust to unbundle a few extras. |
177 |
+ |
178 |
+zstd changes only needed because of https://bugs.gentoo.org/872254 |
179 |
+--- a/CMakeLists.txt |
180 |
++++ b/CMakeLists.txt |
181 |
+@@ -54,3 +54,4 @@ |
182 |
+ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) |
183 |
+- add_subdirectory(3rdparty/gtest EXCLUDE_FROM_ALL) |
184 |
++ find_package(GTest REQUIRED) |
185 |
++ alias_library(gtest_main GTest::gtest_main) |
186 |
+ add_subdirectory(tests/ctest) |
187 |
+--- a/cmake/SearchForStuff.cmake |
188 |
++++ b/cmake/SearchForStuff.cmake |
189 |
+@@ -177,3 +177,3 @@ |
190 |
+ set(ACTUALLY_ENABLE_TESTS ${ENABLE_TESTS}) |
191 |
+-if(ENABLE_TESTS) |
192 |
++if(0) |
193 |
+ if(NOT EXISTS "${CMAKE_SOURCE_DIR}/3rdparty/gtest/CMakeLists.txt") |
194 |
+@@ -210,7 +210,4 @@ |
195 |
+ find_optional_system_library(ryml 3rdparty/rapidyaml/rapidyaml 0.4.0) |
196 |
+-find_optional_system_library(zstd 3rdparty/zstd 1.4.5) |
197 |
+-if (${zstd_TYPE} STREQUAL System) |
198 |
+- alias_library(Zstd::Zstd zstd::libzstd_shared) |
199 |
+- alias_library(pcsx2-zstd zstd::libzstd_shared) |
200 |
+-endif() |
201 |
++pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd) |
202 |
++alias_library(Zstd::Zstd PkgConfig::zstd) |
203 |
+ find_optional_system_library(libzip 3rdparty/libzip 1.8.0) |
204 |
+@@ -243,3 +240,4 @@ |
205 |
+ add_subdirectory(3rdparty/lzma EXCLUDE_FROM_ALL) |
206 |
+-add_subdirectory(3rdparty/libchdr EXCLUDE_FROM_ALL) |
207 |
++pkg_check_modules(chdr REQUIRED IMPORTED_TARGET libchdr) |
208 |
++alias_library(chdr-static PkgConfig::chdr) |
209 |
+ |
210 |
+@@ -269,5 +267,3 @@ |
211 |
+ if(CUBEB_API) |
212 |
+- add_subdirectory(3rdparty/cubeb EXCLUDE_FROM_ALL) |
213 |
+- target_compile_options(cubeb PRIVATE "-w") |
214 |
+- target_compile_options(speex PRIVATE "-w") |
215 |
++ find_package(cubeb REQUIRED) |
216 |
+ endif() |
217 |
|
218 |
diff --git a/games-emulation/pcsx2/files/pcsx2-1.7.3329-wx-vs-sdl.patch b/games-emulation/pcsx2/files/pcsx2-1.7.3329-wx-vs-sdl.patch |
219 |
new file mode 100644 |
220 |
index 000000000000..d00f9553993d |
221 |
--- /dev/null |
222 |
+++ b/games-emulation/pcsx2/files/pcsx2-1.7.3329-wx-vs-sdl.patch |
223 |
@@ -0,0 +1,9 @@ |
224 |
+This check is unnecessary, bit dodgy (ldd+grep), and requires -DSDL2_API=1 |
225 |
+/only/ if wxGTK was built with USE=sdl or else get a cmake unused options |
226 |
+warning. Test code also fails with -Werror=strict-prototypes (clang16). |
227 |
+--- a/cmake/SearchForStuff.cmake |
228 |
++++ b/cmake/SearchForStuff.cmake |
229 |
+@@ -191,3 +191,2 @@ |
230 |
+ if(NOT PCSX2_CORE) |
231 |
+- WX_vs_SDL() |
232 |
+ endif() |
233 |
|
234 |
diff --git a/games-emulation/pcsx2/metadata.xml b/games-emulation/pcsx2/metadata.xml |
235 |
index 0d8f2efac4cd..40c13d5f12ff 100644 |
236 |
--- a/games-emulation/pcsx2/metadata.xml |
237 |
+++ b/games-emulation/pcsx2/metadata.xml |
238 |
@@ -13,6 +13,10 @@ |
239 |
<email>games@g.o</email> |
240 |
<name>Gentoo Games Project</name> |
241 |
</maintainer> |
242 |
+ <use> |
243 |
+ <flag name="qt6">Add support for the Qt 6 application and UI framework</flag> |
244 |
+ <flag name="vulkan">Enable support for Vulkan</flag> |
245 |
+ </use> |
246 |
<upstream> |
247 |
<bugs-to>https://github.com/PCSX2/pcsx2/issues</bugs-to> |
248 |
<remote-id type="github">PCSX2/pcsx2</remote-id> |
249 |
|
250 |
diff --git a/games-emulation/pcsx2/pcsx2-1.7.3329.ebuild b/games-emulation/pcsx2/pcsx2-1.7.3329.ebuild |
251 |
new file mode 100644 |
252 |
index 000000000000..e4673dc1422c |
253 |
--- /dev/null |
254 |
+++ b/games-emulation/pcsx2/pcsx2-1.7.3329.ebuild |
255 |
@@ -0,0 +1,198 @@ |
256 |
+# Copyright 1999-2022 Gentoo Authors |
257 |
+# Distributed under the terms of the GNU General Public License v2 |
258 |
+ |
259 |
+EAPI=8 |
260 |
+ |
261 |
+WX_GTK_VER="3.0-gtk3" |
262 |
+inherit cmake fcaps flag-o-matic wxwidgets |
263 |
+ |
264 |
+if [[ ${PV} == 9999 ]]; then |
265 |
+ inherit git-r3 |
266 |
+ EGIT_REPO_URI="https://github.com/PCSX2/pcsx2.git" |
267 |
+else |
268 |
+ HASH_GLSLANG=c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5 |
269 |
+ HASH_VULKAN=9f4c61a31435a7a90a314fc68aeb386c92a09c0f |
270 |
+ SRC_URI=" |
271 |
+ https://github.com/PCSX2/pcsx2/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz |
272 |
+ vulkan? ( |
273 |
+ https://github.com/KhronosGroup/glslang/archive/${HASH_GLSLANG}.tar.gz -> ${PN}-glslang-${HASH_GLSLANG::10}.tar.gz |
274 |
+ https://github.com/KhronosGroup/Vulkan-Headers/archive/${HASH_VULKAN}.tar.gz -> ${PN}-vulkan-headers-${HASH_VULKAN::10}.tar.gz |
275 |
+ )" |
276 |
+ KEYWORDS="-* ~amd64" |
277 |
+fi |
278 |
+ |
279 |
+DESCRIPTION="PlayStation 2 emulator" |
280 |
+HOMEPAGE="https://pcsx2.net/" |
281 |
+ |
282 |
+LICENSE=" |
283 |
+ GPL-3+ Apache-2.0 BSD BSD-2 BSD-4 Boost-1.0 GPL-2+ LGPL-2.1+ |
284 |
+ LGPL-3+ MIT OFL-1.1 ZLIB public-domain" |
285 |
+SLOT="0" |
286 |
+IUSE="cpu_flags_x86_sse4_1 pulseaudio qt6 test vulkan wayland" |
287 |
+REQUIRED_USE="cpu_flags_x86_sse4_1" # dies at runtime if no support |
288 |
+RESTRICT="!test? ( test )" |
289 |
+ |
290 |
+RDEPEND=" |
291 |
+ app-arch/xz-utils |
292 |
+ app-arch/zstd:= |
293 |
+ dev-cpp/rapidyaml:= |
294 |
+ dev-libs/libaio |
295 |
+ dev-libs/libchdr |
296 |
+ >=dev-libs/libfmt-7.1.3:= |
297 |
+ dev-libs/libzip:=[zstd] |
298 |
+ media-libs/cubeb |
299 |
+ media-libs/harfbuzz |
300 |
+ media-libs/libglvnd |
301 |
+ media-libs/libpng:= |
302 |
+ media-libs/libsamplerate |
303 |
+ >=media-libs/libsdl2-2.0.22[haptic,joystick] |
304 |
+ media-libs/libsoundtouch:= |
305 |
+ net-libs/libpcap |
306 |
+ sys-libs/zlib:= |
307 |
+ virtual/libudev:= |
308 |
+ x11-libs/libX11 |
309 |
+ x11-libs/libXrandr |
310 |
+ qt6? ( |
311 |
+ dev-qt/qtbase:6[gui,network,widgets] |
312 |
+ net-misc/curl |
313 |
+ ) |
314 |
+ !qt6? ( |
315 |
+ dev-libs/glib:2 |
316 |
+ x11-libs/gdk-pixbuf:2 |
317 |
+ x11-libs/gtk+:3[wayland?] |
318 |
+ x11-libs/wxGTK:${WX_GTK_VER}[X] |
319 |
+ pulseaudio? ( media-libs/libpulse ) |
320 |
+ ) |
321 |
+ vulkan? ( media-libs/vulkan-loader ) |
322 |
+ wayland? ( dev-libs/wayland )" |
323 |
+DEPEND=" |
324 |
+ ${RDEPEND} |
325 |
+ x11-base/xorg-proto |
326 |
+ test? ( dev-cpp/gtest )" |
327 |
+BDEPEND=" |
328 |
+ dev-lang/perl |
329 |
+ qt6? ( dev-qt/qttools[linguist] ) |
330 |
+ !qt6? ( sys-devel/gettext )" |
331 |
+ |
332 |
+FILECAPS=( |
333 |
+ -m 0755 "CAP_NET_RAW+eip CAP_NET_ADMIN+eip" usr/bin/pcsx2 |
334 |
+) |
335 |
+ |
336 |
+PATCHES=( |
337 |
+ "${FILESDIR}"/${PN}-1.7.0-crcs.patch |
338 |
+ "${FILESDIR}"/${PN}-1.7.3329-clang16.patch |
339 |
+ "${FILESDIR}"/${PN}-1.7.3329-lto.patch |
340 |
+ "${FILESDIR}"/${PN}-1.7.3329-musl.patch |
341 |
+ "${FILESDIR}"/${PN}-1.7.3329-qt6.patch |
342 |
+ "${FILESDIR}"/${PN}-1.7.3329-unbundle.patch |
343 |
+ "${FILESDIR}"/${PN}-1.7.3329-wx-vs-sdl.patch |
344 |
+) |
345 |
+ |
346 |
+src_unpack() { |
347 |
+ if [[ ${PV} == 9999 ]]; then |
348 |
+ local EGIT_SUBMODULES=() |
349 |
+ if use vulkan; then |
350 |
+ EGIT_SUBMODULES+=( |
351 |
+ 3rdparty/glslang/glslang # needs StandAlone/ResourceLimits.h |
352 |
+ 3rdparty/vulkan-headers # to keep in sync with glslang |
353 |
+ ) |
354 |
+ fi |
355 |
+ git-r3_src_unpack |
356 |
+ else |
357 |
+ default |
358 |
+ if use vulkan; then |
359 |
+ rmdir "${S}"/3rdparty/{glslang/glslang,vulkan-headers} || die |
360 |
+ mv glslang-${HASH_GLSLANG} "${S}"/3rdparty/glslang/glslang || die |
361 |
+ mv Vulkan-Headers-${HASH_VULKAN} "${S}"/3rdparty/vulkan-headers || die |
362 |
+ fi |
363 |
+ fi |
364 |
+} |
365 |
+ |
366 |
+src_prepare() { |
367 |
+ cmake_src_prepare |
368 |
+ |
369 |
+ # qt6 build doesn't support PACKAGE_MODE and need to set resources location |
370 |
+ sed -e "/EmuFolders::AppRoot =/s|=.*|= \"${EPREFIX}/usr/share/PCSX2\";|" \ |
371 |
+ -i pcsx2/Frontend/CommonHost.cpp || die |
372 |
+ |
373 |
+ # pulseaudio is only used for usb-mic and without qt6, not for audio output |
374 |
+ { use pulseaudio && use !qt6; } || :> cmake/FindPulseAudio.cmake || die |
375 |
+ |
376 |
+ # GS tests currently fail to build with qt6 |
377 |
+ use !qt6 || sed -i '/add_subdirectory(GS)/d' tests/ctest/CMakeLists.txt || die |
378 |
+ |
379 |
+ # delete all 3rdparty/* except known-used ones in non-live |
380 |
+ if [[ ${PV} != 9999 ]]; then |
381 |
+ local keep=( |
382 |
+ cpuinfo glad imgui include jpgd lzma simpleini xbyak |
383 |
+ $(usev vulkan 'glslang vulkan-headers') |
384 |
+ ) |
385 |
+ find 3rdparty -mindepth 1 -maxdepth 1 -type d \ |
386 |
+ -not \( -false ${keep[*]/#/-o -name } \) -exec rm -r {} + || die |
387 |
+ fi |
388 |
+} |
389 |
+ |
390 |
+src_configure() { |
391 |
+ use qt6 || setup-wxwidgets |
392 |
+ |
393 |
+ # for bundled glslang (bug #858374) |
394 |
+ use vulkan && append-flags -fno-strict-aliasing |
395 |
+ |
396 |
+ local mycmakeargs=( |
397 |
+ -DBUILD_SHARED_LIBS=no |
398 |
+ -DDISABLE_BUILD_DATE=yes |
399 |
+ -DDISABLE_PCSX2_WRAPPER=yes |
400 |
+ -DDISABLE_SETCAP=yes |
401 |
+ -DENABLE_TESTS=$(usex test) |
402 |
+ -DPACKAGE_MODE=yes |
403 |
+ -DQT_BUILD=$(usex qt6) |
404 |
+ -DUSE_SYSTEM_LIBS=yes |
405 |
+ -DUSE_VTUNE=no |
406 |
+ -DUSE_VULKAN=$(usex vulkan) |
407 |
+ -DWAYLAND_API=$(usex wayland) |
408 |
+ -DXDG_STD=yes |
409 |
+ |
410 |
+ # sse4.1 is the bare minimum required, -m is required at build time |
411 |
+ # (see PCSX2Base.h) and it dies if no support at runtime (AppInit.cpp) |
412 |
+ # https://github.com/PCSX2/pcsx2/pull/4329 |
413 |
+ -DARCH_FLAG=-msse4.1 |
414 |
+ ) |
415 |
+ |
416 |
+ cmake_src_configure |
417 |
+} |
418 |
+ |
419 |
+src_test() { |
420 |
+ cmake_build unittests |
421 |
+} |
422 |
+ |
423 |
+src_install() { |
424 |
+ cmake_src_install |
425 |
+ |
426 |
+ use qt6 && newbin "${BUILD_DIR}"/pcsx2-qt/pcsx2-qt pcsx2 |
427 |
+} |
428 |
+ |
429 |
+pkg_postinst() { |
430 |
+ fcaps_pkg_postinst |
431 |
+ |
432 |
+ local replacing_old |
433 |
+ if [[ ${REPLACING_VERSIONS##* } ]] && |
434 |
+ ver_test ${REPLACING_VERSIONS##* } -lt 1.6.1 |
435 |
+ then |
436 |
+ replacing_old= |
437 |
+ elog ">=${PN}-1.7 has received several changes since <=${PN}-1.6.0, just-in-case" |
438 |
+ elog "it is recommended to backup your save states and memory cards before use." |
439 |
+ elog "Note that the executable was also renamed from 'PCSX2' to 'pcsx2'." |
440 |
+ fi |
441 |
+ |
442 |
+ if [[ ${PV} != 9999 && ( ! ${REPLACING_VERSIONS} || -v replacing_old ) ]]; then |
443 |
+ [[ -v replacing_old ]] && elog |
444 |
+ elog "${PN}-1.7.x is a development branch using a nightly release model" |
445 |
+ elog "(new 'release' every 1-2 days). Stable 1.6.0 is getting old and lacks" |
446 |
+ elog "many notable features (e.g. native 64bit builds). Given it may be a long" |
447 |
+ elog "time before there is a new stable, Gentoo will carry and update 1.7.x" |
448 |
+ elog "roughly every months." |
449 |
+ elog |
450 |
+ elog "Please report an issue if feel a picked nightly release needs to be" |
451 |
+ elog "updated ahead of time or masked (notably for handling regressions)." |
452 |
+ fi |
453 |
+} |