games-emulation/rpcs3 - 9999 (guru)

Search

Install

Install this version:

emerge -a =games-emulation/rpcs3-9999

If this version is masked, you can unmask it using the autounmask tool or standard emerge options:

autounmask =games-emulation/rpcs3-9999

Or alternatively:

emerge --autounmask-write -a =games-emulation/rpcs3-9999

Package Information

Description:
PS3 emulator/debugger
Homepage:
https://rpcs3.net/
License:
GPL-2

Ebuild Details

Version EAPI Keywords Slot
9999 8 ~amd64 0
View Raw Ebuild
# Copyright 2021-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake flag-o-matic xdg optfeature

ASMJIT_COMMIT="416f7356967c1f66784dc1580fe157f9406d8bff" # master~71
GLSLANG_COMMIT="f0bd0257c308b9a26562c1a30c4748a0219cc951" # tags/16.2.0
WOLFSSL_COMMIT="1d363f3adceba9d1478230ede476a37b0dcdef24" # tags/5.9.1-stable
SOUNDTOUCH_COMMIT="a0fba77b6f9cfbdb71f8bbec58b6ac4e5e3b1097" # master
YAMLCPP_COMMIT="51a5d623e3fde1f58829a56ba910f1cb33596222" # master
FUSION_COMMIT="008e03eac0ac1d5f85e16f5fcaefdda3fee75cb8" # tags/1.2.11
VULKANMEMORYALLOCATOR_COMMIT="1d8f600fd424278486eade7ed3e877c99f0846b1" # tags/3.3.0
GAMEMODE_COMMIT="c54d6d4243b0dd0afcb49f2c9836d432da171a2b" # tags/1.8.2

DESCRIPTION="PS3 emulator/debugger"
HOMEPAGE="https://rpcs3.net/"
if [[ ${PV} == "9999" ]]; then
	EGIT_REPO_URI="https://github.com/RPCS3/rpcs3"
	EGIT_SUBMODULES=(
	'asmjit' '3rdparty/glslang' '3rdparty/wolfssl'
	'3rdparty/SoundTouch/soundtouch' '3rdparty/fusion/fusion' '3rdparty/GPUOpen/VulkanMemoryAllocator'
	'3rdparty/feralinteractive/feralinteractive' '3rdparty/yaml-cpp'
	)
	inherit git-r3
else
	SRC_URI="
		https://github.com/RPCS3/rpcs3/archive/v${PV}.tar.gz -> ${P}.tar.gz
		https://github.com/asmjit/asmjit/archive/${ASMJIT_COMMIT}.tar.gz -> ${PN}-asmjit-${ASMJIT_COMMIT}.tar.gz
		https://github.com/KhronosGroup/glslang/archive/${GLSLANG_COMMIT}.tar.gz -> ${PN}-glslang-${GLSLANG_COMMIT}.tar.gz
		https://github.com/wolfSSL/wolfssl/archive/${WOLFSSL_COMMIT}.tar.gz -> ${PN}-wolfssl-${WOLFSSL_COMMIT}.tar.gz
		https://github.com/RPCS3/soundtouch/archive/${SOUNDTOUCH_COMMIT}.tar.gz
			-> ${PN}-soundtouch-${SOUNDTOUCH_COMMIT}.tar.gz
		https://github.com/RPCS3/yaml-cpp/archive/${YAMLCPP_COMMIT}.tar.gz -> ${PN}-yaml-cpp-${YAMLCPP_COMMIT}-.tar.gz
		https://github.com/xioTechnologies/Fusion/archive/${FUSION_COMMIT}.tar.gz -> ${PN}-fusion-${FUSION_COMMIT}.tar.gz
		https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/${VULKANMEMORYALLOCATOR_COMMIT}.tar.gz
			-> ${PN}-VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}.tar.gz
		https://github.com/FeralInteractive/gamemode/archive/${GAMEMODE_COMMIT}.tar.gz -> ${PN}-GameMode.tar.gz
	"
	KEYWORDS="~amd64"
fi

LICENSE="GPL-2"
SLOT="0"
IUSE="discord faudio +llvm opencv vulkan X wayland"

DEPEND="
	app-arch/7zip
	app-arch/zstd
	>=dev-libs/protobuf-33.0.0
	dev-libs/hidapi
	dev-libs/libevdev
	dev-libs/pugixml
	dev-libs/stb
	dev-qt/qtbase:6[concurrent,dbus,gui,widgets]
	dev-qt/qtmultimedia:6
	dev-qt/qtsvg:6
	media-libs/alsa-lib
	media-libs/cubeb
	media-libs/glew
	media-libs/libglvnd
	media-libs/libpng:=
	media-libs/openal
	media-libs/rtmidi
	media-libs/libsdl3[opengl,vulkan?,X?,wayland?]
	media-video/ffmpeg:=
	net-libs/miniupnpc:=
	net-misc/curl
	llvm-core/llvm:=
	virtual/zlib:=
	virtual/libusb:1
	x11-libs/libX11
	faudio? ( app-emulation/faudio )
	opencv? ( media-libs/opencv )
	vulkan? ( media-libs/vulkan-loader[wayland?] )
	wayland? ( dev-libs/wayland )
"
RDEPEND="${DEPEND}"

QA_PREBUILT="usr/share/rpcs3/test/.*"
QA_WX_LOAD="usr/share/rpcs3/test/*"

PATCHES=(
	"${FILESDIR}/${PN}-system-stb.patch"
)

src_prepare() {
	if [[ ${PV} != "9999" ]]; then
		rmdir "${S}/3rdparty/asmjit/asmjit" || die
		mv "${WORKDIR}/asmjit-${ASMJIT_COMMIT}" "${S}/3rdparty/asmjit/asmjit" || die

		rmdir "${S}/3rdparty/glslang/glslang" || die
		mv "${WORKDIR}/glslang-${GLSLANG_COMMIT}" "${S}/3rdparty/glslang/glslang" || die

		rmdir "${S}/3rdparty/wolfssl/wolfssl" || die
		mv "${WORKDIR}/wolfssl-${WOLFSSL_COMMIT}" "${S}/3rdparty/wolfssl/wolfssl" || die

		rmdir "${S}/3rdparty/SoundTouch/soundtouch" || die
		mv "${WORKDIR}/soundtouch-${SOUNDTOUCH_COMMIT}" "${S}/3rdparty/SoundTouch/soundtouch" || die

		rmdir "${S}/3rdparty/yaml-cpp/yaml-cpp" || die
		mv "${WORKDIR}/yaml-cpp-${YAMLCPP_COMMIT}" "${S}/3rdparty/yaml-cpp/yaml-cpp" || die

		rmdir "${S}/3rdparty/fusion/fusion" || die
		mv "${WORKDIR}/Fusion-${FUSION_COMMIT}" "${S}/3rdparty/fusion/fusion" || die

		rmdir "${S}/3rdparty/GPUOpen/VulkanMemoryAllocator" || die
		mv "${WORKDIR}/VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}" \
			"${S}/3rdparty/GPUOpen/VulkanMemoryAllocator" || die

		rmdir "${S}/3rdparty/feralinteractive/feralinteractive" || die
		mv "${WORKDIR}/gamemode-${GAMEMODE_COMMIT}" \
			"${S}/3rdparty/feralinteractive/feralinteractive" || die

		#Define RPCS3 Version
		{ echo "#define RPCS3_GIT_VERSION \"${PV}\""
		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
	fi

	# Disable automagic ccache
	sed -i -e '/find_program(CCACHE_PATH ccache .*)/d' CMakeLists.txt || die

	# QA Notice: Compatibility with CMake < 3.5 has been removed from CMake 4
	find . -maxdepth 9 -type f -name CMakeLists.txt \
	-exec sed -i -e '/cmake_minimum_required/c\cmake_minimum_required(VERSION 4.0)' {} \; \
	|| die "Could not update cmake_minimum_required"

	# Unbundle yaml-cpp: system yaml-cpp should be compiled with -fexceptions
	# sed -i -e '/yaml-cpp/d' 3rdparty/CMakeLists.txt || die
	# sed -i -e '$afind_package(yaml-cpp)\n' CMakeLists.txt || die
	# sed -i -e 's/3rdparty::yaml-cpp/yaml-cpp/' rpcs3/Emu/CMakeLists.txt \
	#	rpcs3/rpcs3qt/CMakeLists.txt || die

	cmake_src_prepare
}

src_configure() {
	filter-lto

	local mycmakeargs=(
		-DBUILD_SHARED_LIBS=OFF # to remove after unbundling
		-DUSE_PRECOMPILED_HEADERS=ON
		-DUSE_SYSTEM_CUBEB=ON
		-DUSE_SYSTEM_CURL=ON
		-DUSE_SYSTEM_FFMPEG=ON
		-DUSE_SYSTEM_PROTOBUF=ON
		-DUSE_SYSTEM_HIDAPI=ON
		-DUSE_SYSTEM_LIBPNG=ON
		-DUSE_SYSTEM_LIBUSB=ON
		-DUSE_SYSTEM_MINIUPNPC=ON
		-DUSE_SYSTEM_PUGIXML=ON
		-DUSE_SYSTEM_RTMIDI=ON
		-DUSE_SYSTEM_ZLIB=ON
		-DUSE_SYSTEM_ZSTD=ON
		-DUSE_DISCORD_RPC=$(usex discord)
		-DUSE_FAUDIO=$(usex faudio)
		-DUSE_SYSTEM_OPENCV=$(usex opencv)
		-DUSE_VULKAN=$(usex vulkan)
		-DWITH_LLVM=$(usex llvm)
		$(cmake_use_find_package wayland Wayland)
	)
	# These options are defined conditionally to suppress QA notice
	use faudio && mycmakeargs+=( -DUSE_SYSTEM_FAUDIO=$(usex faudio) )

	cmake_src_configure

	sed -i -e 's/FFMPEG_LIB_AVFORMAT-NOTFOUND/avformat/' -e 's/FFMPEG_LIB_AVCODEC-NOTFOUND/avcodec/' \
		-e 's/FFMPEG_LIB_AVUTIL-NOTFOUND/avutil/' -e 's/FFMPEG_LIB_SWSCALE-NOTFOUND/swscale/' \
		-e 's/FFMPEG_LIB_SWRESAMPLE-NOTFOUND/swresample/' "${BUILD_DIR}"/build.ninja || die
}

src_install() {
	cmake_src_install

	# remove unneccessary files to save some space
	rm -rf "${ED}/usr/share/rpcs3/"{git,test} || die
}

pkg_postinst() {
	optfeature "FeralInteractive GameMode support" games-util/gamemode
}

USE Flags

Manage flags for this package: euse -i <flag> -p games-emulation/rpcs3 | euse -E <flag> -p games-emulation/rpcs3 | euse -D <flag> -p games-emulation/rpcs3

Global/Standard Flags

llvm
Default: Enabled (+)
X

Inherited Eclasses

xdg

Dependencies

DEPEND

	app-arch/7zip
	app-arch/zstd
	>=dev-libs/protobuf-33.0.0
	dev-libs/hidapi
	dev-libs/libevdev
	dev-libs/pugixml
	dev-libs/stb
	dev-qt/qtbase:6[concurrent,dbus,gui,widgets]
	dev-qt/qtmultimedia:6
	dev-qt/qtsvg:6
	media-libs/alsa-lib
	media-libs/cubeb
	media-libs/glew
	media-libs/libglvnd
	media-libs/libpng:=
	media-libs/openal
	media-libs/rtmidi
	media-libs/libsdl3[opengl,vulkan?,X?,wayland?]
	media-video/ffmpeg:=
	net-libs/miniupnpc:=
	net-misc/curl
	llvm-core/llvm:=
	virtual/zlib:=
	virtual/libusb:1
	x11-libs/libX11
	faudio? ( app-emulation/faudio )
	opencv? ( media-libs/opencv )
	vulkan? ( media-libs/vulkan-loader[wayland?] )
	wayland? ( dev-libs/wayland )

RDEPEND

	app-arch/7zip
	app-arch/zstd
	>=dev-libs/protobuf-33.0.0
	dev-libs/hidapi
	dev-libs/libevdev
	dev-libs/pugixml
	dev-libs/stb
	dev-qt/qtbase:6[concurrent,dbus,gui,widgets]
	dev-qt/qtmultimedia:6
	dev-qt/qtsvg:6
	media-libs/alsa-lib
	media-libs/cubeb
	media-libs/glew
	media-libs/libglvnd
	media-libs/libpng:=
	media-libs/openal
	media-libs/rtmidi
	media-libs/libsdl3[opengl,vulkan?,X?,wayland?]
	media-video/ffmpeg:=
	net-libs/miniupnpc:=
	net-misc/curl
	llvm-core/llvm:=
	virtual/zlib:=
	virtual/libusb:1
	x11-libs/libX11
	faudio? ( app-emulation/faudio )
	opencv? ( media-libs/opencv )
	vulkan? ( media-libs/vulkan-loader[wayland?] )
	wayland? ( dev-libs/wayland )

Manifest for 9999

Type File Size Source URLs
DIST rpcs3-GameMode.tar.gz 79916 bytes https://github.com/FeralInteractive/gamemode/archive/c54d6d4243b0dd0afcb49f2c9836d432da171a2b.tar.gz
DIST rpcs3-VulkanMemoryAllocator-1d8f600fd424278486eade7ed3e877c99f0846b1.tar.gz 962421 bytes https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/1d8f600fd424278486eade7ed3e877c99f0846b1.tar.gz
DIST rpcs3-asmjit-416f7356967c1f66784dc1580fe157f9406d8bff.tar.gz 1152383 bytes https://github.com/asmjit/asmjit/archive/416f7356967c1f66784dc1580fe157f9406d8bff.tar.gz
DIST rpcs3-fusion-008e03eac0ac1d5f85e16f5fcaefdda3fee75cb8.tar.gz 447989 bytes https://github.com/xioTechnologies/Fusion/archive/008e03eac0ac1d5f85e16f5fcaefdda3fee75cb8.tar.gz
DIST rpcs3-glslang-f0bd0257c308b9a26562c1a30c4748a0219cc951.tar.gz 4302423 bytes https://github.com/KhronosGroup/glslang/archive/f0bd0257c308b9a26562c1a30c4748a0219cc951.tar.gz
DIST rpcs3-soundtouch-a0fba77b6f9cfbdb71f8bbec58b6ac4e5e3b1097.tar.gz 607849 bytes https://github.com/RPCS3/soundtouch/archive/a0fba77b6f9cfbdb71f8bbec58b6ac4e5e3b1097.tar.gz
DIST rpcs3-wolfssl-1d363f3adceba9d1478230ede476a37b0dcdef24.tar.gz 26729937 bytes https://github.com/wolfSSL/wolfssl/archive/1d363f3adceba9d1478230ede476a37b0dcdef24.tar.gz
DIST rpcs3-yaml-cpp-51a5d623e3fde1f58829a56ba910f1cb33596222-.tar.gz 1057156 bytes https://github.com/RPCS3/yaml-cpp/archive/51a5d623e3fde1f58829a56ba910f1cb33596222.tar.gz