Install this version:
emerge -a =games-emulation/shadps4-0.20.0
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =games-emulation/shadps4-0.20.0
Or alternatively:
emerge --autounmask-write -a =games-emulation/shadps4-0.20.0
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 0.20.0 | 8 | ~amd64 | 0 |
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake flag-o-matic xdg
MY_PV="v.${PV}"
FDK_AAC_SHA="ee76460efbdb147e26d804c798949c23f174460b"
HALF_SHA="1ddada225144cac0de8f6b5c0dd9acffd99a2e68"
HWINFO_SHA="8660006e0ca4aae5dda7a29e585968b50b0273b7"
IMGUI_SHA="7e1b65d26d52e9dd199d889c148c72184de647b4"
IMGUIFILEDIALOG_SHA="57a1c6a6d44bd99e844e3642d27851f6c065af62"
LIBATRAC9_SHA="946e05a9212976626a9f5e52f29c0a7202871f29"
MINIMP3_SHA="7b590fdcfa5a79c033e76eacc05d0c3e4c79f536"
QTLAUNCHER_SHA="3d4f8d2ec00b830c6fb5459f2de6213168370c17"
QTLAUNCHER_VERSION="2026.10.17"
SIRIT_SHA="fc2b42d5e57ee2f638676c0c02f7fd71934b596a"
SPDLOG_SHA="b8944a4bcd478ee03375c9c50dc8d6c741f43f7b"
VOLK_SHA="e51c647181c7a8101454e69446079bc34100a320"
DESCRIPTION="PlayStation 4 emulator"
HOMEPAGE="https://shadps4.net/ https://github.com/shadps4-emu/shadPS4"
SRC_URI="https://github.com/shadps4-emu/shadPS4/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz
https://github.com/mstorsjo/fdk-aac/archive/${FDK_AAC_SHA}.tar.gz -> ${PN}-fdk-aac-${FDK_AAC_SHA}.tar.gz
https://github.com/ROCm/half/archive/${HALF_SHA}.tar.gz -> ${PN}-half-${HALF_SHA}.tar.gz
https://github.com/shadps4-emu/ext-hwinfo/archive/${HWINFO_SHA}.tar.gz -> ${PN}-hwinfo-${HWINFO_SHA}.tar.gz
https://github.com/shadexternals/imgui/archive/${IMGUI_SHA}.tar.gz -> ${PN}-imgui-${IMGUI_SHA}.tar.gz
https://github.com/shadexternals/ImGuiFileDialog/archive/${IMGUIFILEDIALOG_SHA}.tar.gz
-> ${PN}-ImGuiFileDialog-${IMGUIFILEDIALOG_SHA}.tar.gz
https://github.com/shadps4-emu/ext-LibAtrac9/archive/${LIBATRAC9_SHA}.tar.gz
-> ${PN}-LibAtrac9-${LIBATRAC9_SHA}.tar.gz
https://github.com/lieff/minimp3/archive/${MINIMP3_SHA}.tar.gz -> ${PN}-minimp3-${MINIMP3_SHA}.tar.gz
https://github.com/shadps4-emu/sirit/archive/${SIRIT_SHA}.tar.gz -> ${PN}-sirit-${SIRIT_SHA}.tar.gz
https://github.com/gabime/spdlog/archive/${SPDLOG_SHA}.tar.gz -> ${PN}-spdlog-${SPDLOG_SHA}.tar.gz
gui? (
https://github.com/shadps4-emu/shadps4-qtlauncher/archive/${QTLAUNCHER_SHA}.tar.gz
-> ${PN}-qtlauncher-${QTLAUNCHER_SHA}.tar.gz
https://github.com/zeux/volk/archive/${VOLK_SHA}.tar.gz -> ${PN}-volk-${VOLK_SHA}.tar.gz
)"
S="${WORKDIR}/shadPS4-${MY_PV}"
LICENSE="GPL-2+ BSD Boost-1.0 CC0-1.0 FraunhoferFDK MIT OFL-1.1"
SLOT="0"
KEYWORDS="~amd64"
IUSE="+gui cpu_flags_x86_sse4_1"
REQUIRED_USE="cpu_flags_x86_sse4_1"
RDEPEND="app-arch/zarchive
>=app-arch/zstd-1.5.6:=
>=dev-cpp/abseil-cpp-20250512.1:=
>=dev-libs/boost-1.84:=
>=dev-libs/libfmt-12:=
dev-libs/libusb:1
>=dev-libs/miniz-3.1:=
dev-libs/openssl:=
>=dev-libs/protobuf-30:=
>=dev-libs/pugixml-1.14
>=dev-libs/xxhash-0.8.2
dev-libs/zydis:=
media-libs/freetype
media-libs/libpng:=
>=media-libs/libsdl3-3.1.2
media-libs/openal
media-libs/vulkan-loader
media-video/ffmpeg:=
>=net-libs/miniupnpc-2.3.3:=
virtual/zlib:=
gui? (
dev-qt/qtbase:6[concurrent,gui,network,widgets]
dev-qt/qtmultimedia:6
)"
DEPEND="${RDEPEND}
>=dev-cpp/cli11-2.6.1
>=dev-cpp/magic_enum-0.9.7
>=dev-cpp/nlohmann_json-3.12
dev-cpp/robin-map
>=dev-cpp/toml11-4.2
dev-cpp/cpp-httplib
dev-cpp/tracy
dev-libs/stb
>=dev-libs/xbyak-7.07
dev-util/spirv-headers
>=dev-util/vulkan-headers-1.4.330
>=media-libs/VulkanMemoryAllocator-3.1
dev-util/glslang"
BDEPEND="dev-libs/protobuf
virtual/pkgconfig
gui? ( dev-qt/qttools:6[linguist] )"
PATCHES=( "${FILESDIR}/${PN}-system-libs.patch" )
src_prepare() {
local -A ext=(
[aacdec/fdk-aac]="fdk-aac-${FDK_AAC_SHA}"
[half]="half-${HALF_SHA}"
[hwinfo]="ext-hwinfo-${HWINFO_SHA}"
[imgui]="imgui-${IMGUI_SHA}"
[ImGuiFileDialog]="ImGuiFileDialog-${IMGUIFILEDIALOG_SHA}"
[LibAtrac9]="ext-LibAtrac9-${LIBATRAC9_SHA}"
[minimp3]="minimp3-${MINIMP3_SHA}"
[sirit]="sirit-${SIRIT_SHA}"
[spdlog]="spdlog-${SPDLOG_SHA}"
)
local d
for d in "${!ext[@]}"; do
rmdir "externals/${d}" || die
mv "${WORKDIR}/${ext[${d}]}" "externals/${d}" || die
done
cmake_src_prepare
if use gui; then
local launcher="${WORKDIR}/shadps4-qtlauncher-${QTLAUNCHER_SHA}"
pushd "${launcher}" > /dev/null || die
rmdir externals/{spdlog,volk} || die
cp -r "${S}/externals/spdlog" externals/spdlog || die
mv "${WORKDIR}/volk-${VOLK_SHA}" externals/volk || die
eapply "${FILESDIR}/${PN}-qtlauncher-system-libs.patch"
popd > /dev/null || die
local PATCHES=()
CMAKE_USE_DIR="${launcher}" BUILD_DIR="${launcher}_build" cmake_src_prepare
fi
}
src_configure() {
# The audio code uses SSE4.1 intrinsics; upstream's -march=x86-64-v3 is
# dropped in favour of the user's flags.
append-flags -msse4.1
# Upstream only builds with NDEBUG; without it debug-only code breaks with
# system fmt 12.
append-cppflags -DNDEBUG
local mycmakeargs=(
-DENABLE_DISCORD_RPC=OFF
-DENABLE_SYSTEM_LIBRARIES=ON
-DENABLE_UPDATER=OFF
-DSIRIT_USE_SYSTEM_SPIRV_HEADERS=ON
)
cmake_src_configure
if use gui; then
local launcher="${WORKDIR}/shadps4-qtlauncher-${QTLAUNCHER_SHA}"
# qt_standard_project_setup() adds an $ORIGIN RPATH meant for relocatable bundles.
mycmakeargs=(
-DCMAKE_SKIP_INSTALL_RPATH=ON
-DENABLE_UPDATER=OFF
# The tarball has no git metadata for the title bar.
-DLAUNCHER_APP_VERSION="${QTLAUNCHER_VERSION}"
-DLAUNCHER_GIT_BRANCH=main
-DLAUNCHER_GIT_DESC="${QTLAUNCHER_SHA:0:7}"
# Register the shadps4 found in PATH as the default emulator version.
-DSHADPS4_SYSTEM_VERSION="${PV}"
)
CMAKE_USE_DIR="${launcher}" BUILD_DIR="${launcher}_build" cmake_src_configure
fi
}
src_compile() {
cmake_src_compile
if use gui; then
BUILD_DIR="${WORKDIR}/shadps4-qtlauncher-${QTLAUNCHER_SHA}_build" cmake_src_compile
fi
}
src_install() {
cmake_src_install
if use gui; then
BUILD_DIR="${WORKDIR}/shadps4-qtlauncher-${QTLAUNCHER_SHA}_build" cmake_src_install
fi
}
Manage flags for this package:
euse -i <flag> -p games-emulation/shadps4 |
euse -E <flag> -p games-emulation/shadps4 |
euse -D <flag> -p games-emulation/shadps4
app-arch/zarchive >=app-arch/zstd-1.5.6:= >=dev-cpp/abseil-cpp-20250512.1:= >=dev-libs/boost-1.84:= >=dev-libs/libfmt-12:= dev-libs/libusb:1 >=dev-libs/miniz-3.1:= dev-libs/openssl:= >=dev-libs/protobuf-30:= >=dev-libs/pugixml-1.14 >=dev-libs/xxhash-0.8.2 dev-libs/zydis:= media-libs/freetype media-libs/libpng:= >=media-libs/libsdl3-3.1.2 media-libs/openal media-libs/vulkan-loader media-video/ffmpeg:= >=net-libs/miniupnpc-2.3.3:= virtual/zlib:= gui? ( dev-qt/qtbase:6[concurrent,gui,network,widgets] dev-qt/qtmultimedia:6 ) >=dev-cpp/cli11-2.6.1 >=dev-cpp/magic_enum-0.9.7 >=dev-cpp/nlohmann_json-3.12 dev-cpp/robin-map >=dev-cpp/toml11-4.2 dev-cpp/cpp-httplib dev-cpp/tracy dev-libs/stb >=dev-libs/xbyak-7.07 dev-util/spirv-headers >=dev-util/vulkan-headers-1.4.330 >=media-libs/VulkanMemoryAllocator-3.1 dev-util/glslang
app-arch/zarchive >=app-arch/zstd-1.5.6:= >=dev-cpp/abseil-cpp-20250512.1:= >=dev-libs/boost-1.84:= >=dev-libs/libfmt-12:= dev-libs/libusb:1 >=dev-libs/miniz-3.1:= dev-libs/openssl:= >=dev-libs/protobuf-30:= >=dev-libs/pugixml-1.14 >=dev-libs/xxhash-0.8.2 dev-libs/zydis:= media-libs/freetype media-libs/libpng:= >=media-libs/libsdl3-3.1.2 media-libs/openal media-libs/vulkan-loader media-video/ffmpeg:= >=net-libs/miniupnpc-2.3.3:= virtual/zlib:= gui? ( dev-qt/qtbase:6[concurrent,gui,network,widgets] dev-qt/qtmultimedia:6 )
dev-libs/protobuf virtual/pkgconfig gui? ( dev-qt/qttools:6[linguist] )