# Copyright 2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake plocale xdg-utils # Qt UI translations, shipped in i18n/qt as vita3k_.ts. PLOCALES="en" DESCRIPTION="Experimental PlayStation Vita emulator." HOMEPAGE=" https://vita3k.org https://github.com/Vita3K/Vita3K " SHA="eb6e44baeac58ce404f689a412488661f53f1578" LIBATRAC9_SHA="82767fe38823c32536726ea798f392b0b49e66b9" SPIRV_CROSS_SHA="d8e3e2b141b8c8a167b2e3984736a6baacff316c" VULKANMEMORYALLOCATOR_HPP_SHA="3843082eaa6a6f67e6780715fcd602fc81942c9c" VULKANMEMORYALLOCATOR_HPP_VULKAN_HEADERS_SHA="19725e4d48082fe78e26622b15d3080ccd54112b" VULKANMEMORYALLOCATOR_HPP_VULKANMEMORYALLOCATOR_SHA="c788c52156f3ef7bc7ab769cb03c110a53ac8fcb" BETTER_ENUMS_SHA="c35576bed0295689540b39873126129adfa0b4c8" CONCURRENTQUEUE_SHA="9afb99746f0f5fc94ac8aef737053ae0481ba8d1" DIRENT_SHA="31db6474b5231c180bd4618c8c90e43af50c86d0" DLMALLOC_SHA="e98f4ee160380d7c39dc1f04e7488bcf0770d391" _DYNARMIC_SHA="86458a0bd369d63ba4c2ef812cacbb6c9080c065" GLSLANG_SHA="fc9889c889561c5882e83819dcaffef5ed45529b" GOOGLETEST_SHA="52eb8108c5bdec04579160ae17225d66034bd723" IMGUI_SHA="cb16568fca5297512ff6a8f3b877f461c4323fbe" IMGUI_CLUB_SHA="53a2df3dd1b19dd321beb0897a0d1b9f87e5429c" LIBADRENOTOOLS_SHA="8fae8ce254dfc1344527e05301e43f37dea2df80" LIBADRENOTOOLS_LIB_LINKERNSBYPASS_SHA="aa3975893d83ef1bc84c321ec60c65fbf1287887" LIBFAT16_SHA="d9a890b712dcdb46d3d33230997efc59f5ad8d62" PRINTF_SHA="c75def6db38f9978c55e8d27227858df911cd727" PSVPFSTOOLS_SHA="e21df9a74852433f48d6593b8ef203dc7c424e05" PSVPFSTOOLS_LIBB64_SHA="3896b7a74c70baed0e2f6039a1dbd723e5d5cc8f" PSVPFSTOOLS_LIBZRIF_SHA="7d1e69bee7d2f08ea5754eff4463c041aacd49af" PSVPFSTOOLS_PSVPFSPARSER_SHA="d14381f871a69009bd18b2aaec2213a6738bebba" PSVPFSTOOLS_ZLIB_SHA="cb210089eb06453199578993566012493f6f7d21" SUBSTITUTE_SHA="319da6b563d8da689f3b9df2fbb839edd41a1943" VITA_TOOLCHAIN_SHA="43fc1e3c686a1fc035eca583fdfeaa5e6419a61a" VITA_TOOLCHAIN_PSP2RELA_SHA="9e0f4913866431aef48967cfb7667b085e79428b" SRC_URI="https://github.com/Vita3K/Vita3K/archive/${SHA}.tar.gz -> ${P}-${SHA:0:7}.tar.gz https://github.com/Vita3K/LibAtrac9/archive/${LIBATRAC9_SHA}.tar.gz -> ${PN}-LibAtrac9-${LIBATRAC9_SHA:0:7}.tar.gz https://github.com/KhronosGroup/SPIRV-Cross/archive/${SPIRV_CROSS_SHA}.tar.gz -> ${PN}-SPIRV-Cross-${SPIRV_CROSS_SHA:0:7}.tar.gz https://github.com/YaaZ/VulkanMemoryAllocator-Hpp/archive/${VULKANMEMORYALLOCATOR_HPP_SHA}.tar.gz -> ${PN}-VulkanMemoryAllocator-Hpp-${VULKANMEMORYALLOCATOR_HPP_SHA:0:7}.tar.gz https://github.com/KhronosGroup/Vulkan-Headers/archive/${VULKANMEMORYALLOCATOR_HPP_VULKAN_HEADERS_SHA}.tar.gz -> ${PN}-VulkanMemoryAllocator-Hpp-Vulkan-Headers-${VULKANMEMORYALLOCATOR_HPP_VULKAN_HEADERS_SHA:0:7}.tar.gz https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/${VULKANMEMORYALLOCATOR_HPP_VULKANMEMORYALLOCATOR_SHA}.tar.gz -> ${PN}-VulkanMemoryAllocator-Hpp-VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_HPP_VULKANMEMORYALLOCATOR_SHA:0:7}.tar.gz https://github.com/aantron/better-enums/archive/${BETTER_ENUMS_SHA}.tar.gz -> ${PN}-better-enums-${BETTER_ENUMS_SHA:0:7}.tar.gz https://github.com/cameron314/concurrentqueue/archive/${CONCURRENTQUEUE_SHA}.tar.gz -> ${PN}-concurrentqueue-${CONCURRENTQUEUE_SHA:0:7}.tar.gz https://github.com/tronkko/dirent/archive/${DIRENT_SHA}.tar.gz -> ${PN}-dirent-${DIRENT_SHA:0:7}.tar.gz https://github.com/Vita3K/dlmalloc/archive/${DLMALLOC_SHA}.tar.gz -> ${PN}-dlmalloc-${DLMALLOC_SHA:0:7}.tar.gz https://github.com/Vita3K/dynarmic/archive/${_DYNARMIC_SHA}.tar.gz -> ${PN}-dynarmic-${_DYNARMIC_SHA:0:7}.tar.gz https://github.com/KhronosGroup/glslang/archive/${GLSLANG_SHA}.tar.gz -> ${PN}-glslang-${GLSLANG_SHA:0:7}.tar.gz https://github.com/google/googletest/archive/${GOOGLETEST_SHA}.tar.gz -> ${PN}-googletest-${GOOGLETEST_SHA:0:7}.tar.gz https://github.com/ocornut/imgui/archive/${IMGUI_SHA}.tar.gz -> ${PN}-imgui-${IMGUI_SHA:0:7}.tar.gz https://github.com/ocornut/imgui_club/archive/${IMGUI_CLUB_SHA}.tar.gz -> ${PN}-imgui_club-${IMGUI_CLUB_SHA:0:7}.tar.gz https://github.com/bylaws/libadrenotools/archive/${LIBADRENOTOOLS_SHA}.tar.gz -> ${PN}-libadrenotools-${LIBADRENOTOOLS_SHA:0:7}.tar.gz https://github.com/bylaws/liblinkernsbypass/archive/${LIBADRENOTOOLS_LIB_LINKERNSBYPASS_SHA}.tar.gz -> ${PN}-libadrenotools-lib-linkernsbypass-${LIBADRENOTOOLS_LIB_LINKERNSBYPASS_SHA:0:7}.tar.gz https://github.com/Vita3K/libfat16/archive/${LIBFAT16_SHA}.tar.gz -> ${PN}-libfat16-${LIBFAT16_SHA:0:7}.tar.gz https://github.com/Vita3K/printf/archive/${PRINTF_SHA}.tar.gz -> ${PN}-printf-${PRINTF_SHA:0:7}.tar.gz https://github.com/Vita3K/psvpfstools/archive/${PSVPFSTOOLS_SHA}.tar.gz -> ${PN}-psvpfstools-${PSVPFSTOOLS_SHA:0:7}.tar.gz https://github.com/imWatchful/libb64/archive/${PSVPFSTOOLS_LIBB64_SHA}.tar.gz -> ${PN}-psvpfstools-libb64-${PSVPFSTOOLS_LIBB64_SHA:0:7}.tar.gz https://github.com/imWatchful/libzrif/archive/${PSVPFSTOOLS_LIBZRIF_SHA}.tar.gz -> ${PN}-psvpfstools-libzrif-${PSVPFSTOOLS_LIBZRIF_SHA:0:7}.tar.gz https://github.com/Vita3K/psvpfsparser/archive/${PSVPFSTOOLS_PSVPFSPARSER_SHA}.tar.gz -> ${PN}-psvpfstools-psvpfsparser-${PSVPFSTOOLS_PSVPFSPARSER_SHA:0:7}.tar.gz https://github.com/imWatchful/zlib/archive/${PSVPFSTOOLS_ZLIB_SHA}.tar.gz -> ${PN}-psvpfstools-zlib-${PSVPFSTOOLS_ZLIB_SHA:0:7}.tar.gz https://github.com/Vita3K/substitute/archive/${SUBSTITUTE_SHA}.tar.gz -> ${PN}-substitute-${SUBSTITUTE_SHA:0:7}.tar.gz https://github.com/vitasdk/vita-toolchain/archive/${VITA_TOOLCHAIN_SHA}.tar.gz -> ${PN}-vita-toolchain-${VITA_TOOLCHAIN_SHA:0:7}.tar.gz https://github.com/Princess-of-Sleeping/psp2rela/archive/${VITA_TOOLCHAIN_PSP2RELA_SHA}.tar.gz -> ${PN}-vita-toolchain-psp2rela-${VITA_TOOLCHAIN_PSP2RELA_SHA:0:7}.tar.gz " S="${WORKDIR}/Vita3K-${SHA}" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64" DEPEND=">=dev-libs/boost-1.81:= dev-cpp/tracy dev-cpp/yaml-cpp:= dev-libs/capstone:= dev-libs/libfmt:= dev-libs/nativefiledialog-extended dev-libs/openssl:= dev-libs/pugixml dev-libs/spdlog:= dev-libs/stb dev-libs/xxhash media-libs/cubeb media-libs/libsdl3 media-video/ffmpeg:= sys-apps/dbus virtual/zlib:=" RDEPEND="${DEPEND}" PATCHES=( "${FILESDIR}/${PN}-0001-allow-shared-system-boost-on.patch" "${FILESDIR}/${PN}-0003-add-cmake-install-rules-for-.patch" "${FILESDIR}/${PN}-0004-skip-empty-boost-submodule-c.patch" "${FILESDIR}/${PN}-0005-add-use_system_ffmpeg-opt-in.patch" "${FILESDIR}/${PN}-0006-codec-use-public-ffmpeg-api-.patch" "${FILESDIR}/${PN}-0007-add-use_system_stb-opt-in-fo.patch" "${FILESDIR}/${PN}-0008-add-use_system_fmt-opt-in-fo.patch" "${FILESDIR}/${PN}-0009-add-use_system_sdl3-opt-in-f.patch" "${FILESDIR}/${PN}-0010-add-use_system_capstone-opt-.patch" "${FILESDIR}/${PN}-0011-add-use_system_tracy-opt-in-.patch" "${FILESDIR}/${PN}-0012-add-use_system_pugixml-opt-i.patch" "${FILESDIR}/${PN}-0013-add-use_system_yaml_cpp-opt-.patch" "${FILESDIR}/${PN}-0014-add-use_system_spdlog-opt-in.patch" "${FILESDIR}/${PN}-0015-add-use_system_xxhash-opt-in.patch" "${FILESDIR}/${PN}-0016-fall-back-to-xxhash.h-inline.patch" "${FILESDIR}/${PN}-0017-add-use_system_nfde-opt-in-f.patch" "${FILESDIR}/${PN}-0018-add-use_system_cubeb-opt-in-.patch" "${FILESDIR}/${PN}-0019-force-the-bundled-xbyak-syst.patch" "${FILESDIR}/${PN}-0020-build-ensure-ndebug-for-relw.patch" ) src_prepare() { rm -rf "${S}/external/LibAtrac9" || die mv "${WORKDIR}/LibAtrac9-${LIBATRAC9_SHA}" "${S}/external/LibAtrac9" || die rm -rf "${S}/external/SPIRV-Cross" || die mv "${WORKDIR}/SPIRV-Cross-${SPIRV_CROSS_SHA}" "${S}/external/SPIRV-Cross" || die rm -rf "${S}/external/VulkanMemoryAllocator-Hpp" || die mv "${WORKDIR}/VulkanMemoryAllocator-Hpp-${VULKANMEMORYALLOCATOR_HPP_SHA}" "${S}/external/VulkanMemoryAllocator-Hpp" || die rm -rf "${S}/external/better-enums" || die mv "${WORKDIR}/better-enums-${BETTER_ENUMS_SHA}" "${S}/external/better-enums" || die rm -rf "${S}/external/concurrentqueue" || die mv "${WORKDIR}/concurrentqueue-${CONCURRENTQUEUE_SHA}" "${S}/external/concurrentqueue" || die rm -rf "${S}/external/dirent" || die mv "${WORKDIR}/dirent-${DIRENT_SHA}" "${S}/external/dirent" || die rm -rf "${S}/external/dlmalloc" || die mv "${WORKDIR}/dlmalloc-${DLMALLOC_SHA}" "${S}/external/dlmalloc" || die rm -rf "${S}/external/dynarmic" || die mv "${WORKDIR}/dynarmic-${_DYNARMIC_SHA}" "${S}/external/dynarmic" || die rm -rf "${S}/external/glslang" || die mv "${WORKDIR}/glslang-${GLSLANG_SHA}" "${S}/external/glslang" || die rm -rf "${S}/external/googletest" || die mv "${WORKDIR}/googletest-${GOOGLETEST_SHA}" "${S}/external/googletest" || die rm -rf "${S}/external/imgui" || die mv "${WORKDIR}/imgui-${IMGUI_SHA}" "${S}/external/imgui" || die rm -rf "${S}/external/imgui_club" || die mv "${WORKDIR}/imgui_club-${IMGUI_CLUB_SHA}" "${S}/external/imgui_club" || die rm -rf "${S}/external/libadrenotools" || die mv "${WORKDIR}/libadrenotools-${LIBADRENOTOOLS_SHA}" "${S}/external/libadrenotools" || die rm -rf "${S}/external/libfat16" || die mv "${WORKDIR}/libfat16-${LIBFAT16_SHA}" "${S}/external/libfat16" || die rm -rf "${S}/external/printf" || die mv "${WORKDIR}/printf-${PRINTF_SHA}" "${S}/external/printf" || die rm -rf "${S}/external/psvpfstools" || die mv "${WORKDIR}/psvpfstools-${PSVPFSTOOLS_SHA}" "${S}/external/psvpfstools" || die rm -rf "${S}/external/substitute" || die mv "${WORKDIR}/substitute-${SUBSTITUTE_SHA}" "${S}/external/substitute" || die rm -rf "${S}/external/vita-toolchain" || die mv "${WORKDIR}/vita-toolchain-${VITA_TOOLCHAIN_SHA}" "${S}/external/vita-toolchain" || die rm -rf "${S}/external/VulkanMemoryAllocator-Hpp/Vulkan-Headers" || die mv "${WORKDIR}/Vulkan-Headers-${VULKANMEMORYALLOCATOR_HPP_VULKAN_HEADERS_SHA}" "${S}/external/VulkanMemoryAllocator-Hpp/Vulkan-Headers" || die rm -rf "${S}/external/VulkanMemoryAllocator-Hpp/VulkanMemoryAllocator" || die mv "${WORKDIR}/VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_HPP_VULKANMEMORYALLOCATOR_SHA}" "${S}/external/VulkanMemoryAllocator-Hpp/VulkanMemoryAllocator" || die rm -rf "${S}/external/psvpfstools/libb64" || die mv "${WORKDIR}/libb64-${PSVPFSTOOLS_LIBB64_SHA}" "${S}/external/psvpfstools/libb64" || die rm -rf "${S}/external/psvpfstools/libzrif" || die mv "${WORKDIR}/libzRIF-${PSVPFSTOOLS_LIBZRIF_SHA}" "${S}/external/psvpfstools/libzrif" || die rm -rf "${S}/external/psvpfstools/psvpfsparser" || die mv "${WORKDIR}/psvpfsparser-${PSVPFSTOOLS_PSVPFSPARSER_SHA}" "${S}/external/psvpfstools/psvpfsparser" || die rm -rf "${S}/external/psvpfstools/zlib" || die mv "${WORKDIR}/zlib-${PSVPFSTOOLS_ZLIB_SHA}" "${S}/external/psvpfstools/zlib" || die rm -rf "${S}/external/vita-toolchain/psp2rela" || die mv "${WORKDIR}/psp2rela-${VITA_TOOLCHAIN_PSP2RELA_SHA}" "${S}/external/vita-toolchain/psp2rela" || die rm -rf "${S}/external/libadrenotools/lib/linkernsbypass" || die mv "${WORKDIR}/liblinkernsbypass-${LIBADRENOTOOLS_LIB_LINKERNSBYPASS_SHA}" "${S}/external/libadrenotools/lib/linkernsbypass" || die cmake_src_prepare } src_configure() { local mycmakeargs=( -DBUILD_SHARED_LIBS=OFF -DUSE_DISCORD_RICH_PRESENCE=OFF -DUSE_VITA3K_UPDATE=OFF -DVITA3K_FORCE_SYSTEM_BOOST=ON -DUSE_SYSTEM_CAPSTONE=ON -DUSE_SYSTEM_CUBEB=ON -DUSE_SYSTEM_FFMPEG=ON -DUSE_SYSTEM_FMT=ON -DUSE_SYSTEM_NFDE=ON -DUSE_SYSTEM_SDL3=ON -DUSE_SYSTEM_SPDLOG=ON -DUSE_SYSTEM_STB=ON -DUSE_SYSTEM_PUGIXML=ON -DUSE_SYSTEM_TRACY=ON -DUSE_SYSTEM_XXHASH=ON -DUSE_SYSTEM_YAML_CPP=ON -Wno-dev ) cmake_src_configure } src_install() { DESTDIR="${D}" cmake --install "${BUILD_DIR}" --component vita3k || die # shellcheck disable=SC2329 rm_disabled_locale() { # shellcheck disable=SC2317 rm "${ED}/usr/share/Vita3K/translations/vita3k_${1//-/_}.qm" || die } plocale_for_each_disabled_locale rm_disabled_locale einstalldocs } pkg_postinst() { xdg_desktop_database_update xdg_icon_cache_update } pkg_postrm() { xdg_desktop_database_update xdg_icon_cache_update }