From 13eac072c952b56f28bb17456af9ecf2fbade41f Mon Sep 17 00:00:00 2001 From: Andrew Udvare Date: Sun, 17 Dec 2023 22:23:03 -0500 Subject: [PATCH] games-emulation/rpcs3: add patch for LLVM 17 and require it Signed-off-by: Andrew Udvare --- games-emulation/rpcs3/Manifest | 5 +- .../rpcs3-9999-ittapi-remove-git-co.patch | 18 --- .../rpcs3/files/rpcs3-9999-llvm-17.patch | 139 ++++++++++++++++++ ....0.29-r2.ebuild => rpcs3-0.0.29-r3.ebuild} | 9 +- 4 files changed, 143 insertions(+), 28 deletions(-) delete mode 100644 games-emulation/rpcs3/files/rpcs3-9999-ittapi-remove-git-co.patch create mode 100644 games-emulation/rpcs3/files/rpcs3-9999-llvm-17.patch rename games-emulation/rpcs3/{rpcs3-0.0.29-r2.ebuild => rpcs3-0.0.29-r3.ebuild} (89%) diff --git a/games-emulation/rpcs3/Manifest b/games-emulation/rpcs3/Manifest index d9c5e0617..aed05810f 100644 --- a/games-emulation/rpcs3/Manifest +++ b/games-emulation/rpcs3/Manifest @@ -6,13 +6,12 @@ AUX rpcs3-0005-allow-system-cubeb.patch 1183 BLAKE2B d6f6ee1851459476c6ee7f554ce AUX rpcs3-0006-support-for-system-miniupnpc.patch 1996 BLAKE2B 293f331824853710b0f4b825d76b3036713ade880113df06c099106f0efa28cd3ebbe58df24b21b5c4cd6035a79177b4b9c4cea03c5a211ebe10efb4baf2f82b SHA512 7c8e14b9fc4933028c42e340bc980efdfc4bedd4a2cd9682dd9077cacc6a4d79cb548790a5759bab40351835e4866517c462a4790827eff09d73a2164a57692c AUX rpcs3-0007-remove-extra.patch 782 BLAKE2B c3bfe67899d548106a13eecbf85356dd588c388aa86529e7534ff9645c529ddccff41467dba61e6de79886d0436b3071ec789f0184e688ecdc10e6fe43a946c4 SHA512 d86e3320d67d8b65285e7f8c0fd4355f7a755c63cadfb8730b3cd97426e5461389bf2f21ce2a7e5f1e6acf3be5351c7efd6dc0c15773f535c5b9037349d21204 AUX rpcs3-0008-allow-system-rtmidi.patch 1105 BLAKE2B f4da84003b9a317fe35a8ebf0cc610cfca3d30540dd0a8cfe48bcde2463f549d9d3632abe1f2704be7adb771688f18f884e5034929ca7291f5efb437ee36b86f SHA512 fafe89747ec797d9dc4c4cfd797112ee39ce543ede9876f3407e6f4b0e7b3f4595f952fee64bd53ae021b842e8e84590956c449d826b492ac794e0219d01c231 -AUX rpcs3-9999-ittapi-remove-git-co.patch 875 BLAKE2B 95be42e3522bce4e96572f2d983ceb7df9ada946c8c4aca93647009204d6e6a01f3e5fc052e39202ae93a94a67bce7a0203596bd64cec797472805cc8a0c3c97 SHA512 101312dbce964fd1d8631900743068bf8a83ce4357884d791c214215954b75ff3477a86fb1fbff31aeb8faee8a72ffec13bb3b0bdf4a2aa55a8531f2c04eaf1a +AUX rpcs3-9999-llvm-17.patch 4911 BLAKE2B 15f7efab5c7584fd2e831a0f4fc58b323a5a4264185bd711f25e9a5781ca0891c7cfcaa8914279c3fc2370b5c96c69255d4d1cbeed8f61c92fd0bf17c9fe6450 SHA512 c84f66fa4c4c3852d538aacf4525515d6f5c350feaaf87b22f48650a78fe5aaf679715f488d80301a0b24d271e8866a5b8cbce1744363472692406d18221b977 DIST rpcs3-0.0.29.tar.gz 8874802 BLAKE2B 2eb2fbd501b7e787e782419aabb38fa668f6cdfd2d3dc4266d907680b680261caa8bbee922a31337f7668cb39bcfff1d88e87928e1ef6dea0499278f98651854 SHA512 f093c0d98739cecb0564064b0c9a6e94271f3d6bc53f5fe3d9700ae4c25a2acdac134c4d44ef824cab592fd4217f5f8c35caf67edf8cacc151a68554b6cf9f12 DIST rpcs3-83cfba6.tar.gz 524551 BLAKE2B f6bc7ea33db5d56dc459d551b41682386626eefebc50fb6a4f039a1db1dd67772e0c478a1be555697d48453f6447f9d07de8b6f8cb604f6004c398c305876a5c SHA512 8efa893b5661af1b5b4a1a025b4f180dae2052f6522588d74c0673fb4c8545a96c760928b6a6bcedc5ddeb516bb5d205e4bda37755cf892ae55f002ddee97a4a DIST rpcs3-asmjit-c598476.tar.gz 974040 BLAKE2B 28f2d23bcded48f1526b8820a5c9c919e014bdd6e8095762ba37414d2a47dc5665d89c4ca43fee9b216d5dfc71ef19835ce04f6dccc500451f204033b42be20c SHA512 c1196edb656833caa6d4d6817e34e4d2320ecda06bc6b531a0ff73f9e3786a98dad3f2348884de4e272d0e6853bb7b1eaab3feaa5d4430f28c3c9339ded1a58c DIST rpcs3-hidapi-8b43a97.tar.gz 349041 BLAKE2B f97011530cf94c31cac192c3a78151ebde1a25f77afdea634706648c108919ff33dff40eb127b18c1bd4f2e08dea565ccd6716be76813981ee2333242a136197 SHA512 643f2422f1718ae5633297468fd9257fbe9feb6ba47c85161d282df087413a501dd9c223762427df9455b886006c2bb8346cbe4bf3be63d9b9a04ef7207414af DIST rpcs3-ittapi-3.18.12.tar.gz 128417 BLAKE2B b2ca4f347d3ba0e4dbcdaf2f0f3bc53088d75d7dc08044d32e96808d95435ef10a476863a21973e34281a901d7410d1c0ef8723745db17f9460919c63e1f239f SHA512 fe819ed535c5477642e705fc10ca0eb63a91cca75ea008c388cbd15d1ec0f67e10f1ae291f76f33cad6707c7c77f36044d9e8a59b99eead9f645e2e689e707da -DIST rpcs3-llvm-cd89023.tar.gz 179419292 BLAKE2B 0bacf12ca3ef4a4e575f167b7c8cf89bf7126f864a4a1d7f353912222eff3f1c327c46868c34db4e5d6e3260452a2a2873a20a25051b4a2face8cdcbc417b40b SHA512 24ba93298848820db8606b3377eab72aba2adb949ff07116e7f37f485161aad2e0f124d6c5423270faab7665c9f1078d7b348e94acc55e27528499909f79b6bc DIST rpcs3-yaml-cpp-0b67821.tar.gz 1034010 BLAKE2B 856fbfb254e6afdd78197182fb550e0428aff1c284675fbe2e7b6d5bcac3e9f06fb944dcfaaa13bb139d5920dd4546a4d57140b56f41a51dee6a9f00c2784a5b SHA512 be8860d95514024d869d002b23879faf0b776e22f945087c5c6745c6c81286b3d5ae3afb73fbe195f3cdb0938be08f98ecfa8e80f6fa6964593334cf319e6587 -EBUILD rpcs3-0.0.29-r2.ebuild 4863 BLAKE2B b270a742d0e97002f6b259e5d7fb3433e3c06e16706ab1a8cde8c34054d907422e4f67e232b24e48bda6b0d8e53b8e77545f3cfc24e6dd3e1314958ab846aaa5 SHA512 11a429657f8a2bf97eeaf584dad0b9dcae2785484ee99adb21da241e4b6e3cb847566a2aa4b1b95cc4d037942ee667136c52b0fb8691efd87a0688054cdc0613 +EBUILD rpcs3-0.0.29-r3.ebuild 4407 BLAKE2B d1412e2d5d20d12fdb5dacce26736d516c5921e20479dc7d13a5079b9665414d0d6065ba26cf09ca856ec4a7a29debeb8d5a46e23f1c485c980a1f98f4f87230 SHA512 7512c0149b09dfa639a606d2fbc923c871ac7a50d12ce6c88e9a5bda83305a48458375cecb8b69365798fe8853d3a26b853ab4f1701aafde5cd1023c46207478 MISC metadata.xml 609 BLAKE2B 57cc7af451b10f5184d67d98f45ca728de247dd480c6d2a10dda77da823b71ab88ae766f6ddfd565a51924703e3efd179fab0d87a3416623ebbff5b76ad079eb SHA512 4430cbe2e32908bd058329ff2faebf6e6cafc316d7c762229fa6f267ce3497af5d6f87da8fa83934fdadc60fb7f5ee68efe0a8e635ebd8471b34e8935464a708 diff --git a/games-emulation/rpcs3/files/rpcs3-9999-ittapi-remove-git-co.patch b/games-emulation/rpcs3/files/rpcs3-9999-ittapi-remove-git-co.patch deleted file mode 100644 index 3188a06b4..000000000 --- a/games-emulation/rpcs3/files/rpcs3-9999-ittapi-remove-git-co.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/lib/ExecutionEngine/IntelJITEvents/CMakeLists.txt b/lib/ExecutionEngine/IntelJITEvents/CMakeLists.txt -index 0c5017c359d..f89c7fd0156 100644 ---- a/3rdparty/llvm/llvm/llvm/lib/ExecutionEngine/IntelJITEvents/CMakeLists.txt -+++ b/3rdparty/llvm/llvm/llvm/lib/ExecutionEngine/IntelJITEvents/CMakeLists.txt -@@ -21,13 +21,6 @@ if(NOT EXISTS ${ITTAPI_SOURCE_DIR}/ittapi) - endif() - endif() - --execute_process(COMMAND ${GIT_EXECUTABLE} checkout ${ITTAPI_GIT_TAG} -- WORKING_DIRECTORY ${ITTAPI_SOURCE_DIR}/ittapi -- RESULT_VARIABLE GIT_CHECKOUT_RESULT) --if(NOT GIT_CHECKOUT_RESULT EQUAL "0") -- message(FATAL_ERROR "git checkout ${ITTAPI_GIT_TAG} failed with ${GIT_CHECKOUT_RESULT}, please checkout ${ITTAPI_GIT_TAG} at ${ITTAPI_SOURCE_DIR}/ittapi") --endif() -- - include_directories( ${ITTAPI_SOURCE_DIR}/ittapi/include/ ) - - if( HAVE_LIBDL ) diff --git a/games-emulation/rpcs3/files/rpcs3-9999-llvm-17.patch b/games-emulation/rpcs3/files/rpcs3-9999-llvm-17.patch new file mode 100644 index 000000000..a47e87b57 --- /dev/null +++ b/games-emulation/rpcs3/files/rpcs3-9999-llvm-17.patch @@ -0,0 +1,139 @@ +From 50df01d00e8c80ede4e0928ee9ba6a822ef408d8 Mon Sep 17 00:00:00 2001 +From: oltolm +Date: Mon, 25 Sep 2023 17:04:48 +0200 +Subject: [PATCH] llvm: add support for LLVM 17 + +--- + 3rdparty/llvm/CMakeLists.txt | 9 ++++++++- + Utilities/JIT.cpp | 2 +- + rpcs3/Emu/CPU/CPUTranslator.h | 10 +++++++++- + rpcs3/Emu/Cell/PPUThread.cpp | 2 +- + rpcs3/Emu/Cell/SPURecompiler.cpp | 12 +++++++++++- + 5 files changed, 30 insertions(+), 5 deletions(-) + +diff --git a/3rdparty/llvm/CMakeLists.txt b/3rdparty/llvm/CMakeLists.txt +index 679cb23a613..fdadd8c5d3f 100644 +--- a/3rdparty/llvm/CMakeLists.txt ++++ b/3rdparty/llvm/CMakeLists.txt +@@ -38,6 +38,10 @@ if(WITH_LLVM) + + # now tries to find LLVM again + find_package(LLVM 16.0 CONFIG) ++ if(NOT LLVM_FOUND) ++ set(LLVM_DIR "${CMAKE_CURRENT_BINARY_DIR}/llvm_build/lib/cmake/llvm/") ++ find_package(LLVM 17.0 CONFIG) ++ endif() + if(NOT LLVM_FOUND) + message(FATAL_ERROR "Couldn't build LLVM from the submodule. You might need to run `git submodule update --init`") + endif() +@@ -50,10 +54,13 @@ if(WITH_LLVM) + endif() + + find_package(LLVM 16.0 CONFIG) ++ if(NOT LLVM_FOUND) ++ find_package(LLVM 17.0 CONFIG) ++ endif() + + if (NOT LLVM_FOUND) + if (LLVM_VERSION AND LLVM_VERSION_MAJOR LESS 16) +- message(FATAL_ERROR "Found LLVM version ${LLVM_VERSION}. Required version 16. \ ++ message(FATAL_ERROR "Found LLVM version ${LLVM_VERSION}. Required versions 16...17. \ + Enable BUILD_LLVM option to build LLVM from included as a git submodule.") + endif() + +diff --git a/Utilities/JIT.cpp b/Utilities/JIT.cpp +index caec5a6b22a..b183f16f7d6 100644 +--- a/Utilities/JIT.cpp ++++ b/Utilities/JIT.cpp +@@ -866,7 +866,7 @@ void asmjit::simd_builder::vec_extract_gpr(u32 esize, const x86::Gp& dst, const + #endif + #include "llvm/Support/TargetSelect.h" + #include "llvm/Support/FormattedStream.h" +-#include "llvm/Support/Host.h" ++#include "llvm/TargetParser/Host.h" + #include "llvm/ExecutionEngine/ExecutionEngine.h" + #include "llvm/ExecutionEngine/RTDyldMemoryManager.h" + #include "llvm/ExecutionEngine/ObjectCache.h" +diff --git a/rpcs3/Emu/CPU/CPUTranslator.h b/rpcs3/Emu/CPU/CPUTranslator.h +index edf6c92a65f..57948d2d1a3 100644 +--- a/rpcs3/Emu/CPU/CPUTranslator.h ++++ b/rpcs3/Emu/CPU/CPUTranslator.h +@@ -922,6 +922,14 @@ inline llvm_div operator /(T1&& a1, T2&& a2) + return {a1, a2}; + } + ++inline llvm::Constant* getZeroValueForNegation(llvm::Type* Ty) ++{ ++ if (Ty->isFPOrFPVectorTy()) ++ return llvm::ConstantFP::getNegativeZero(Ty); ++ ++ return llvm::Constant::getNullValue(Ty); ++} ++ + template > + struct llvm_neg + { +@@ -971,7 +979,7 @@ struct llvm_neg + { + v1 = i->getOperand(1); + +- if (i->getOperand(0) == llvm::ConstantFP::getZeroValueForNegation(v1->getType())) ++ if (i->getOperand(0) == getZeroValueForNegation(v1->getType())) + { + if (auto r1 = a1.match(v1, _m); v1) + { +diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp +index ee89bb46920..b69dca24053 100644 +--- a/rpcs3/Emu/Cell/PPUThread.cpp ++++ b/rpcs3/Emu/Cell/PPUThread.cpp +@@ -41,7 +41,7 @@ + #pragma GCC diagnostic ignored "-Wmissing-noreturn" + #endif + #include "llvm/Support/FormattedStream.h" +-#include "llvm/Support/Host.h" ++#include "llvm/TargetParser/Host.h" + #include "llvm/Object/ObjectFile.h" + #if LLVM_VERSION_MAJOR < 17 + #include "llvm/ADT/Triple.h" +diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp +index e90133c93c9..f69e7924a88 100644 +--- a/rpcs3/Emu/Cell/SPURecompiler.cpp ++++ b/rpcs3/Emu/Cell/SPURecompiler.cpp +@@ -4373,7 +4373,7 @@ void spu_recompiler_base::dump(const spu_program& result, std::string& out) + #if LLVM_VERSION_MAJOR < 17 + #include "llvm/ADT/Triple.h" + #endif +-#include "llvm/Support/Host.h" ++#include "llvm/TargetParser/Host.h" + #include "llvm/IR/LegacyPassManager.h" + #include "llvm/IR/Verifier.h" + #include "llvm/IR/InlineAsm.h" +@@ -6304,9 +6304,15 @@ class spu_llvm_recompiler : public spu_recompiler_base, public cpu_translator + pm.add(createEarlyCSEPass()); + pm.add(createCFGSimplificationPass()); + //pm.add(createNewGVNPass()); ++#if LLVM_VERSION_MAJOR < 17 + pm.add(createDeadStoreEliminationPass()); ++#endif + pm.add(createLICMPass()); ++#if LLVM_VERSION_MAJOR < 17 + pm.add(createAggressiveDCEPass()); ++#else ++ pm.add(createDeadCodeEliminationPass()); ++#endif + //pm.add(createLintPass()); // Check + + for (auto& f : *m_module) +@@ -6772,8 +6778,12 @@ class spu_llvm_recompiler : public spu_recompiler_base, public cpu_translator + // Basic optimizations + pm.add(createEarlyCSEPass()); + pm.add(createCFGSimplificationPass()); ++#if LLVM_VERSION_MAJOR < 17 + pm.add(createDeadStoreEliminationPass()); + pm.add(createAggressiveDCEPass()); ++#else ++ pm.add(createDeadCodeEliminationPass()); ++#endif + //pm.add(createLintPass()); + + for (auto& f : *_module) diff --git a/games-emulation/rpcs3/rpcs3-0.0.29-r2.ebuild b/games-emulation/rpcs3/rpcs3-0.0.29-r3.ebuild similarity index 89% rename from games-emulation/rpcs3/rpcs3-0.0.29-r2.ebuild rename to games-emulation/rpcs3/rpcs3-0.0.29-r3.ebuild index fe89105c6..e754bee50 100644 --- a/games-emulation/rpcs3/rpcs3-0.0.29-r2.ebuild +++ b/games-emulation/rpcs3/rpcs3-0.0.29-r3.ebuild @@ -9,11 +9,9 @@ HOMEPAGE="https://rpcs3.net/ https://github.com/RPCS3/rpcs3" ASMJIT_SHA="c59847629d3a19da4d10f0be4ac33b43fc4a100f" HIDAPI_SHA="8b43a97a9330f8b0035439ce9e255e4be202deca" ITTAPI_VERSION="3.18.12" -LLVM_SHA="cd89023f797900e4492da58b7bed36f702120011" SOUNDTOUCH_SHA="83cfba67b6af80bb9bfafc0b324718c4841f2991" YAML_CPP_SHA="0b67821f307e8c6bf0eba9b6d3250e3cf1441450" SRC_URI="https://github.com/RPCS3/rpcs3/archive/v${PV}.tar.gz -> ${P}.tar.gz - https://github.com/llvm/llvm-project/archive/${LLVM_SHA}.tar.gz -> ${PN}-llvm-${LLVM_SHA:0:7}.tar.gz https://github.com/asmjit/asmjit/archive/${ASMJIT_SHA}.tar.gz -> ${PN}-asmjit-${ASMJIT_SHA:0:7}.tar.gz https://github.com/RPCS3/hidapi/archive/${HIDAPI_SHA}.tar.gz -> ${PN}-hidapi-${HIDAPI_SHA:0:7}.tar.gz https://github.com/RPCS3/yaml-cpp/archive/${YAML_CPP_SHA}.tar.gz -> ${PN}-yaml-cpp-${YAML_CPP_SHA:0:7}.tar.gz @@ -46,6 +44,7 @@ DEPEND=">=dev-libs/flatbuffers-2.0.6 media-video/ffmpeg net-libs/miniupnpc net-misc/curl + sys-devel/llvm:17 sys-libs/ncurses sys-libs/zlib media-libs/libjpeg-turbo @@ -71,12 +70,10 @@ PATCHES=( "${FILESDIR}/${PN}-0006-support-for-system-miniupnpc.patch" "${FILESDIR}/${PN}-0007-remove-extra.patch" "${FILESDIR}/${PN}-0008-allow-system-rtmidi.patch" - "${FILESDIR}/${PN}-9999-ittapi-remove-git-co.patch" + "${FILESDIR}/${PN}-9999-llvm-17.patch" ) src_prepare() { - rmdir "${S}/3rdparty/llvm/llvm" || die - mv "${WORKDIR}/llvm-project-${LLVM_SHA}" "${S}/3rdparty/llvm/llvm" || die rmdir "${S}/3rdparty/hidapi/hidapi" || die mv "${WORKDIR}/hidapi-${HIDAPI_SHA}" "${S}/3rdparty/hidapi/hidapi" || die rmdir "${S}/3rdparty/yaml-cpp/yaml-cpp" || die @@ -87,8 +84,6 @@ src_prepare() { echo '#define RPCS3_GIT_BRANCH "master"' echo '#define RPCS3_GIT_FULL_BRANCH "RPCS3/rpcs3/master"' echo '#define RPCS3_GIT_VERSION_NO_UPDATE 1'; } > rpcs3/git-version.h - sed -re 's/MATCHES "\^\(DEBUG\|RELEASE\|RELWITHDEBINFO\|MINSIZEREL\)\$/MATCHES "^(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL|GENTOO)/' \ - -i "${S}/3rdparty/llvm/llvm/llvm/CMakeLists.txt" || die sed -e '/find_program(CCACHE_FOUND/d' -i CMakeLists.txt || die sed -re '/\s+add_compile_options\(-Werror=missing-noreturn\).*/d' \ -e '/\s+add_compile_options\(-Werror=old-style-cast\).*/d' \