1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-23 02:30:30 +02:00

gnu: Add rpcs3.

* gnu/packages/emulators.scm (rpcs3): New variable.

Change-Id: I18dd22e4699dbe8f80c801a4d8e9b228990219b0
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
Andrew Wong
2025-12-07 23:32:28 -05:00
committed by Liliana Marie Prikler
parent 3b2e5bbc84
commit e5ca91ea97

View File

@@ -91,6 +91,7 @@
#:use-module (gnu packages graphics)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages image-processing)
#:use-module (gnu packages kde-frameworks)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libusb)
@@ -109,9 +110,12 @@
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages serialization)
#:use-module (gnu packages qt)
#:use-module (gnu packages robotics)
#:use-module (gnu packages sdl)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages stb)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils)
@@ -3725,6 +3729,165 @@ hardware states and PS2 system memory. This allows you to play PS2 games on
your PC, with many additional features and benefits.")
(license license:gpl3+)))
(define-public rpcs3
;; NB: When updating to a new release, don't forget to check if any more
;; libraries can be linked dynamically, and to update the commits for any
;; specialized sources included in native-inputs so that they match the
;; sub-modules in ./3rdparty.
(package
(name "rpcs3")
(version "0.0.38")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/RPCS3/rpcs3")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0dwrfjs9b3ldwyn68nmyf0qip4hm1w8c3picdl3zk7z76j7rrhal"))))
(build-system cmake-build-system)
(arguments
(list
#:configure-flags
#~(list
;; -fexceptions is needed to compile part of yaml-cpp.
"-DCMAKE_CXX_FLAGS=-fexceptions"
;; "USE_NATIVE_INSTRUCTIONS makes rpcs3 compile with -march=native,
;; which is useful for local builds, but not good for packages."
"-DUSE_NATIVE_INSTRUCTIONS=OFF"
"-DWITH_LLVM=ON"
"-DBUILD_LLVM=OFF"
"-DSTATIC_LINK_LLVM=OFF"
"-DUSE_FAUDIO=ON"
"-DUSE_LIBEVDEV=ON"
"-DUSE_DISCORD_RPC=OFF"
"-DUSE_VULKAN=ON"
"-DUSE_PRECOMPILED_HEADERS=OFF"
"-DUSE_SDL=ON"
"-DUSE_SYSTEM_CUBEB=ON"
"-DUSE_SYSTEM_CURL=ON"
"-DUSE_SYSTEM_FAUDIO=ON"
"-DUSE_SYSTEM_FFMPEG=ON"
"-DUSE_SYSTEM_FLATBUFFERS=ON"
"-DUSE_SYSTEM_GLSLANG=ON"
"-DUSE_SYSTEM_HIDAPI=ON"
"-DUSE_SYSTEM_LIBPNG=ON"
"-DUSE_SYSTEM_LIBUSB=ON"
"-DUSE_SYSTEM_MINIUPNPC=ON"
"-DUSE_SYSTEM_OPENAL=ON"
"-DUSE_SYSTEM_OPENCV=ON"
"-DUSE_SYSTEM_PUGIXML=ON"
"-DUSE_SYSTEM_RTMIDI=ON"
"-DUSE_SYSTEM_SDL=ON"
"-DUSE_SYSTEM_VULKAN_MEMORY_ALLOCATOR=ON"
"-DUSE_SYSTEM_WOLFSSL=ON"
"-DUSE_SYSTEM_ZLIB=ON"
"-DUSE_SYSTEM_ZSTD=ON"
"-DBUILD_RPCS3_TESTS=ON"
"-DRUN_RPCS3_TESTS=ON"
;; "Choose whether to enable GameMode features or not."
;; Off, for now, because GameMode requires systemd to work.
"-DUSE_GAMEMODE=OFF")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'add-some-submodules
;; TODO: Remove as many of these as possible.
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "3rdparty"
(rmdir "fusion/fusion")
(symlink (string-append
(search-input-directory inputs "Fusion") "/../")
"fusion/fusion")
(rmdir "SoundTouch/soundtouch")
(symlink (dirname
(search-input-file inputs "soundtouch.pc.in"))
"SoundTouch/soundtouch")
(rmdir "asmjit/asmjit")
(symlink (string-append
(search-input-directory inputs "src/asmjit")
"/../../")
"asmjit/asmjit")
(rmdir "yaml-cpp/yaml-cpp")
(symlink (dirname
(search-input-file inputs "yaml-cpp.pc.in"))
"yaml-cpp/yaml-cpp")
(rmdir "stblib/stb")
(symlink (dirname
(search-input-file inputs "stb_c_lexer.h"))
"stblib/stb")))))))
(inputs
(append
(list cubeb
curl
eudev
faudio
;; RPCS3 v0.0.38 uses symbols that are deprecated in ffmpeg 8.
;; See https://github.com/RPCS3/rpcs3/issues/17461
ffmpeg-6
flatbuffers
glew
glslang
glu
hidapi
jack-2
libevdev
libglvnd
libpng
libusb-next
llvm-18
mesa
miniupnpc-next
openal
opencv
pugixml-next
pulseaudio
qtbase
qtmultimedia
qtsvg
rtmidi
sdl3
spirv-tools
vulkan-loader
wayland
wolfssl-for-rpcs3
zlib
`(,zstd "lib"))))
(native-inputs
(list
googletest
pkg-config
vulkan-memory-allocator
(package-source asmjit)
(package-source fusion)
(package-source stb)
(origin
(file-name "rpcs3-soundtouch-source")
(method git-fetch)
(uri (git-reference
(url "https://github.com/RPCS3/soundtouch")
(commit "3982730833b6daefe77dcfb32b5c282851640c17")))
(sha256
(base32 "07q514mx69jkrz7i58c45iwj3zql88vdsa1sah7immwr1005i91y")))
(origin
(file-name "rpcs3-yaml-cpp-source")
(method git-fetch)
(uri (git-reference
(url "https://github.com/RPCS3/yaml-cpp")
(commit "456c68f452da09d8ca84b375faa2b1397713eaba")))
(sha256
(base32 "0spp91yz1bvr9dljc7zgjf2sqw49d8b9yinlncykjwzxm7ap7jys")))))
(home-page "https://rpcs3.net/")
(synopsis "PlayStation 3 emulator")
(description "RPCS3 is an emulator and debugger for the Sony
@acronym{PS3,PlayStation 3}.")
(license
(list license:gpl2 ;core, pine_server.h
license:bsd-3 ;FindWayland.cmake, FindFFMPEG.cmake
;;flow_layout.h, sse2neon.h, unordered_dense.h, ffx_fsr1.h,
;;ffx_a.h, bcdec.hpp, LUrlParser.h, khrplatform.h
license:expat))))
(define-public gens-gs
(package
(name "gens-gs")