commit: 665fb2524880373d2f278b2dd6767cab68c53b6f Author: Thibaud CANALE <thican <AT> thican <DOT> net> AuthorDate: Wed Mar 12 15:42:46 2025 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Thu Mar 13 09:17:53 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=665fb252
games-emulation/dolphin: add 2503 Closes: https://bugs.gentoo.org/951209 Signed-off-by: Thibaud CANALE <thican <AT> thican.net> Closes: https://github.com/gentoo/gentoo/pull/41038 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> games-emulation/dolphin/Manifest | 5 + games-emulation/dolphin/dolphin-2503.ebuild | 299 ++++++++++++++++++++++++++++ 2 files changed, 304 insertions(+) diff --git a/games-emulation/dolphin/Manifest b/games-emulation/dolphin/Manifest index 95a91365476c..a609939dc0a5 100644 --- a/games-emulation/dolphin/Manifest +++ b/games-emulation/dolphin/Manifest @@ -1,9 +1,14 @@ DIST Vulkan-Headers-05fe2cc910a68c9ba5dac07db46ef78573acee72.tar.gz 2288519 BLAKE2B bd11ba3ecac3bf0f6df255a4b87556092b9630c85b97cbcc2c0901d5293882da6f996e326cce8f410f8503f9e29454f0a2994c4adceb4565490d435b307d4495 SHA512 3679a087ea024a15b2d30730834345d2af3869ae012bcc5a996eed90558516d16b762010d887b9c762b5177bfc0a21b3bd29dbc4e236e067132623482068b058 +DIST Vulkan-Headers-39f924b810e561fd86b2558b6711ca68d4363f68.tar.gz 2497345 BLAKE2B 66c276e4ecb6f648fb0ba7f211edda51d6ef8c439b88abdafd0bb33a7aa255e9189e88ef2a40179e9ab8433c82f98cbb40a8aaadbbd6a6e72c7a838ad68d07ae SHA512 2d722e32e3c5a217a62d0583fd1597fcf5e05c7092f0c629f54025ae8fdb22b12dba375d1aeeeb90e4a69507e254f33aebe435bf8f058f55a5ed3f5e6d351d6f DIST VulkanMemoryAllocator-009ecd192c1289c7529bff248a16cfe896254816.tar.gz 904841 BLAKE2B 64966d40b86197a18f86c9715acb2ea649ea6b69d3de38d9385a8130e35519036eca49b7503886123284be58d5c248dd9d7c5cb16a489c64d385439c382dcd30 SHA512 3a47a4bc81562b96f598f357b803d2219fa167e6eb87779837efa6e85fc6eaff8e1cfbdea0935117a7b3c630cc99944b94e91823eafa8a94d80b2c459f33c317 +DIST VulkanMemoryAllocator-3bab6924988e5f19bf36586a496156cf72f70d9f.tar.gz 937902 BLAKE2B d4c9d002ab787045e4d117237c3f7d031ec4dae514e958881529c6dc11cc6105dd57a26f214791f8e0943e2cfa105f90e99ee958b97c1c386ef44fcaad6b7d33 SHA512 6e2935ce6fbafc2cc8c5a34bf3eaa5dc2e8f65c97c886cfa57da0b45ca83bc8ade4429a7556ce6292af9aeb947d69231b50ae64a55a281c304176e8ea1cd2098 DIST dolphin-2407.tar.gz 19773792 BLAKE2B a6de162479d45e6b1cba5444df5abdeafd92773d1e49cc837dfc6c1ab45ed11d7a3f72a582ddb56d0ecc6b550d03c1a02a9389852ba438d8a9235d5ea3285d4b SHA512 8bb8459d8b653708e34d5df184d96ba9705e8c50b00d066862d4012f78b7e71938207979b3bd900dd14c35c3b6c0258bb5c8fad9ba73267188e98d8a2edfb73f DIST dolphin-2412.tar.gz 19926717 BLAKE2B 89036561987283067a1f116aa38a94c92d0c8e3114d28a0545787f63b389cb204b265bdd4c2452ec02ca3fe90fccf5fc0fd55be3acb9b8bd346e3738f3f96767 SHA512 3025e24b4cdc8cf3493e23a7968064cb9090d622a3a830b0a964fc87af840227125de8c0f69243c7d3975fc5ea2dd0c485d870301c25e8fa078abe83ae88bca9 +DIST dolphin-2503.tar.gz 20148047 BLAKE2B 3b41fd126f3b61d2bb6e6232b3009901a6ec1b8a21e2df6932205aa1a4dc63441aff0fd60ecba1683350bb6b49c42d97e33d22c96ac150ce518eb8d79355693b SHA512 dd61676b2200d4f3a6b053b563f9687740bddc043733240ae0bf44f037b782ba292465c55a63930c8119f2e515476947f90b9e0348208881ecbd88c5def52e0c +DIST implot-18c72431f8265e2b0b5378a3a73d8a883b2175ff.tar.gz 138121 BLAKE2B 481fe2b4ebd1ab3554465aff07b2c2e85f2db033de1ac69b95bcf56d269fcf01d8a0f951ad45ddcc0e192f1cc6cac3478633f006f403b8e930350891945ae87f SHA512 9cb2581a4e8d844914606f55a667afcfb31374973b0035b4d81488253e350df67439e97b46b236324c2a1e01146e6a191ad94d70823a3888c97e9380715272fa DIST implot-cc5e1daa5c7f2335a9460ae79c829011dc5cef2d.tar.gz 137924 BLAKE2B c830275b05a74e8a60a7164f22c01dd9a5a35f9219736785c9cc17830dae809eb8cba65604b0388c3966d7658c9fe71cb9a8468c23d3ed17b7890581a2222cb8 SHA512 ab9935e759f38d19e6f60ed195c22018929ba46fccf783f4486346d7ffb7040b6097bc4c3d3b3577cc91f0c413684e07449a24bebf3db9c937638092c181de92 DIST mgba-8739b22fbc90fdf0b4f6612ef9c0520f0ba44a51.tar.gz 14488880 BLAKE2B 5beec2de9a0999a93a4ad704f45246b551824a9ddd576a5b77e731b269fb8f7d311d1c4e2cfb217f34e22a49050498c70e52d714d9c0bb7b4e4d178f49f15c3d SHA512 782d456b7bf827591c774f146a88821b41b3b936faefddb5aee82bb0dd16ca7ad7228a1c331e1e517eac40a71cc4c94cc44bee12560946328c8433e1c6327225 DIST minizip-ng-3eed562ef0ea3516db30d1c8ecb0e1b486d8cb70.tar.gz 770054 BLAKE2B 7d5b24a5be7134ac17178869883625b28fa80a55f878231ca4156901057db72b20b4d342f8d0bb04a436fcd72d7ccbb0f79adc8503a16e1197a84f3a476da730 SHA512 f76a2cefd7d9ad47f8c3c73b3483b657fab0507605e0b29895eaec759718a65f0d2915ea7022831f3f98493891a1ab4f5035971bf09d4860abbf4cde0b091869 +DIST minizip-ng-55db144e03027b43263e5ebcb599bf0878ba58de.tar.gz 772757 BLAKE2B 853a252d2a8f8c0668804cf961626413aaf89a7eb85b27142860e379e933a54c0d847d976b007071636461b29dd85d6b910d44a6c140581b983b59b14bc4fd9c SHA512 88d1222886a3b5cd3ca1aff7b12902d1d19462c446ef39a092a56bb91b5889956afcce047b4227c79a50a95d9275bd0a23f5cd6cbef76478b6e21bbf86dd486b DIST tinygltf-c5641f2c22d117da7971504591a8f6a41ece488b.tar.gz 5903179 BLAKE2B 0ef4b36cf26f3a5a544d0c739317b8cce041121b1dec58d1d9dbc3bbc892df284d80aa4c45ec1ebc332ba96b151230a5b0dbf95b95aefcf86ee7878c393eda5d SHA512 486bcf32be137dea5746117074dc51bc978290698de7831e1c4bbaa4acb56ed99fc34c38e69878a955b3e5f10f43eab07b0637164f822beae0fddd099aa0c56d DIST zlib-ng-ce01b1e41da298334f8214389cc9369540a7560f.tar.gz 2223118 BLAKE2B c79a138c31c74c291ae38a6c4d8983e0884169ced4147d7242d1a766f70777de0368ceba815ac2261bd2543dba55a6106b70f7e040fae4f200863da217f88978 SHA512 73f4e56410ae298ef211ebab52b1a0d3d5bfae91c2de3cd294b56cd0a78ab50e1203b396c7df462f360c1aaaa9392ec5625473d1e9eb084cc64bc813e28d12a1 diff --git a/games-emulation/dolphin/dolphin-2503.ebuild b/games-emulation/dolphin/dolphin-2503.ebuild new file mode 100644 index 000000000000..c1a08ea5606a --- /dev/null +++ b/games-emulation/dolphin/dolphin-2503.ebuild @@ -0,0 +1,299 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_COMPAT=( 18 ) +LLVM_OPTIONAL=1 + +inherit cmake llvm-r1 pax-utils xdg-utils + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/dolphin-emu/dolphin" + EGIT_SUBMODULES=( + Externals/mGBA/mgba + Externals/implot/implot + Externals/tinygltf/tinygltf + Externals/Vulkan-Headers + Externals/VulkanMemoryAllocator + Externals/zlib-ng/zlib-ng + Externals/minizip-ng/minizip-ng + ) +else + MGBA_COMMIT=8739b22fbc90fdf0b4f6612ef9c0520f0ba44a51 + IMPLOT_COMMIT=18c72431f8265e2b0b5378a3a73d8a883b2175ff + TINYGLTF_COMMIT=c5641f2c22d117da7971504591a8f6a41ece488b + VULKAN_HEADERS_COMMIT=39f924b810e561fd86b2558b6711ca68d4363f68 + VULKANMEMORYALLOCATOR_COMMIT=3bab6924988e5f19bf36586a496156cf72f70d9f + ZLIB_NG_COMMIT=ce01b1e41da298334f8214389cc9369540a7560f + MINIZIP_NG_COMMIT=55db144e03027b43263e5ebcb599bf0878ba58de + SRC_URI=" + https://github.com/dolphin-emu/dolphin/archive/${PV}.tar.gz + -> ${P}.tar.gz + https://github.com/epezent/implot/archive/${IMPLOT_COMMIT}.tar.gz + -> implot-${IMPLOT_COMMIT}.tar.gz + https://github.com/syoyo/tinygltf/archive/${TINYGLTF_COMMIT}.tar.gz + -> tinygltf-${TINYGLTF_COMMIT}.tar.gz + https://github.com/KhronosGroup/Vulkan-Headers/archive/${VULKAN_HEADERS_COMMIT}.tar.gz + -> Vulkan-Headers-${VULKAN_HEADERS_COMMIT}.tar.gz + https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/${VULKANMEMORYALLOCATOR_COMMIT}.tar.gz + -> VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}.tar.gz + https://github.com/zlib-ng/zlib-ng/archive/${ZLIB_NG_COMMIT}.tar.gz + -> zlib-ng-${ZLIB_NG_COMMIT}.tar.gz + https://github.com/zlib-ng/minizip-ng/archive/${MINIZIP_NG_COMMIT}.tar.gz + -> minizip-ng-${MINIZIP_NG_COMMIT}.tar.gz + mgba? ( + https://github.com/mgba-emu/mgba/archive/${MGBA_COMMIT}.tar.gz + -> mgba-${MGBA_COMMIT}.tar.gz + ) + " + KEYWORDS="~amd64 ~arm64" +fi + +DESCRIPTION="Gamecube and Wii game emulator" +HOMEPAGE="https://dolphin-emu.org/" + +LICENSE="GPL-2+ BSD BSD-2 LGPL-2.1+ MIT ZLIB" +SLOT="0" +IUSE=" + alsa bluetooth discord-presence doc egl +evdev ffmpeg +gui llvm log mgba + profile pulseaudio sdl systemd telemetry test upnp vulkan +" +REQUIRED_USE=" + mgba? ( gui ) + llvm? ( ${LLVM_REQUIRED_USE} ) +" +RESTRICT="!test? ( test )" + +RDEPEND=" + app-arch/bzip2:= + >=app-arch/lz4-1.8:= + app-arch/xz-utils + >=app-arch/zstd-1.4.0:= + dev-libs/hidapi + >=dev-libs/libfmt-10.1:= + dev-libs/lzo:2 + dev-libs/pugixml + dev-libs/xxhash + media-libs/cubeb + media-libs/libsfml:= + media-libs/libspng + >=net-libs/enet-1.3.18:1.3= + net-libs/mbedtls:0= + net-misc/curl + x11-libs/libX11 + x11-libs/libXi + x11-libs/libXrandr + virtual/libusb:1 + virtual/opengl + alsa? ( media-libs/alsa-lib ) + bluetooth? ( net-wireless/bluez:= ) + evdev? ( + dev-libs/libevdev + virtual/udev + ) + ffmpeg? ( media-video/ffmpeg:= ) + gui? ( + dev-qt/qtbase:6[gui,widgets] + dev-qt/qtsvg:6 + ) + llvm? ( $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}=') ) + profile? ( dev-util/oprofile ) + pulseaudio? ( media-libs/libpulse ) + sdl? ( >=media-libs/libsdl2-2.30.9 ) + systemd? ( sys-apps/systemd:0= ) + upnp? ( net-libs/miniupnpc:= ) +" +DEPEND=" + ${RDEPEND} + egl? ( media-libs/libglvnd ) + test? ( dev-cpp/gtest ) +" +BDEPEND=" + sys-devel/gettext + virtual/pkgconfig +" + +# vulkan-loader required for vulkan backend which can be selected +# at runtime. +RDEPEND+=" + vulkan? ( media-libs/vulkan-loader ) +" + +# [directory]=license +declare -A KEEP_BUNDLED=( + # please keep this list in CMakeLists.txt order + + # TODO: use system libraries + # bug #873952 + # https://github.com/dolphin-emu/dolphin/pull/13089 + [zlib-ng]=ZLIB + [minizip-ng]=ZLIB + + [Bochs_disasm]=LGPL-2.1+ + [cpp-optparse]=MIT + [imgui]=MIT + [implot]=MIT + [glslang]=BSD + + [tinygltf]=MIT + + [FreeSurround]=GPL-2+ + [soundtouch]=LGPL-2.1+ + + # FIXME: discord-rpc not packaged + [discord-rpc]=MIT + + [mGBA]=MPL-2.0 + + [picojson]=BSD-2 + [expr]=MIT + [rangeset]=ZLIB + [FatFs]=FatFs + [Vulkan-Headers]="|| ( Apache-2.0 MIT )" + [VulkanMemoryAllocator]=MIT +) + +PATCHES=( + "${FILESDIR}"/dolphin-2407-minizip.patch +) + +add_bundled_licenses() { + for license in ${KEEP_BUNDLED[@]}; do + LICENSE+=" ${license}" + done +} +add_bundled_licenses + +pkg_setup() { + use llvm && llvm-r1_pkg_setup +} + +src_prepare() { + if [[ ${PV} != *9999 ]]; then + mv -T "${WORKDIR}/implot-${IMPLOT_COMMIT}" Externals/implot/implot || die + mv -T "${WORKDIR}/tinygltf-${TINYGLTF_COMMIT}" Externals/tinygltf/tinygltf || die + mv -T "${WORKDIR}/Vulkan-Headers-${VULKAN_HEADERS_COMMIT}" Externals/Vulkan-Headers || die + mv -T "${WORKDIR}/VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}" Externals/VulkanMemoryAllocator || die + mv -T "${WORKDIR}/zlib-ng-${ZLIB_NG_COMMIT}" Externals/zlib-ng/zlib-ng || die + mv -T "${WORKDIR}/minizip-ng-${MINIZIP_NG_COMMIT}" Externals/minizip-ng/minizip-ng || die + if use mgba; then + mv -T "${WORKDIR}/mgba-${MGBA_COMMIT}" Externals/mGBA/mgba || die + fi + fi + + cmake_src_prepare + + local s remove=() + for s in Externals/*; do + [[ -f ${s} ]] && continue + if ! has "${s#Externals/}" "${!KEEP_BUNDLED[@]}"; then + remove+=( "${s}" ) + fi + done + + einfo "removing sources: ${remove[*]}" + rm -r "${remove[@]}" || die + + # Remove dirty suffix: needed for netplay + sed -i -e 's/--dirty/&=""/' CMake/ScmRevGen.cmake || die +} + +src_configure() { + local mycmakeargs=( + -DDSPTOOL=ON + -DENABLE_ALSA=$(usex alsa) + -DENABLE_ANALYTICS=$(usex telemetry) + -DENABLE_AUTOUPDATE=OFF + -DENABLE_BLUEZ=$(usex bluetooth) + -DENABLE_CLI_TOOL=ON + -DENABLE_EGL=$(usex egl) + -DENABLE_EVDEV=$(usex evdev) + -DENABLE_LLVM=$(usex llvm) + -DENABLE_LTO=OFF # just adds -flto, user can do that via flags + -DENABLE_NOGUI=$(usex !gui) + -DENABLE_PULSEAUDIO=$(usex pulseaudio) + -DENABLE_QT=$(usex gui) + -DENABLE_SDL=$(usex sdl) + -DENABLE_TESTS=$(usex test) + -DENABLE_VULKAN=$(usex vulkan) + -DENCODE_FRAMEDUMPS=$(usex ffmpeg) + -DFASTLOG=$(usex log) + -DOPROFILING=$(usex profile) + -DUSE_DISCORD_PRESENCE=$(usex discord-presence) + -DUSE_MGBA=$(usex mgba) + -DUSE_RETRO_ACHIEVEMENTS=OFF + -DUSE_UPNP=$(usex upnp) + + -DCMAKE_DISABLE_FIND_PACKAGE_SYSTEMD=$(usex !systemd) + + # Use system libraries + -DUSE_SYSTEM_FMT=ON + -DUSE_SYSTEM_PUGIXML=ON + -DUSE_SYSTEM_ENET=ON + -DUSE_SYSTEM_XXHASH=ON + -DUSE_SYSTEM_BZIP2=ON + -DUSE_SYSTEM_LIBLZMA=ON + -DUSE_SYSTEM_ZSTD=ON + -DUSE_SYSTEM_MINIZIP=OFF + -DUSE_SYSTEM_LZO=ON + -DUSE_SYSTEM_LZ4=ON + -DUSE_SYSTEM_SPNG=ON + -DUSE_SYSTEM_CUBEB=ON + -DUSE_SYSTEM_LIBUSB=ON + -DUSE_SYSTEM_SFML=ON + -DUSE_SYSTEM_MBEDTLS=ON + -DUSE_SYSTEM_CURL=ON + -DUSE_SYSTEM_ICONV=ON + -DUSE_SYSTEM_HIDAPI=ON + + # Use ccache only when user did set FEATURES=ccache (or similar) + # not when ccache binary is present in system (automagic). + -DCCACHE_BIN=CCACHE_BIN-NOTFOUND + + # Undo cmake.eclass's defaults. + # All dolphin's libraries are private + # and rely on circular dependency resolution. + -DBUILD_SHARED_LIBS=OFF + + # Avoid warning spam around unset variables. + -Wno-dev + ) + + # System installed git shouldnt affect non live builds + [[ ${PV} != *9999 ]] && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON ) + + use test && mycmakeargs+=( -DUSE_SYSTEM_GTEST=ON ) + use mgba && mycmakeargs+=( -DUSE_SYSTEM_LIBMGBA=OFF ) + use sdl && mycmakeargs+=( -DUSE_SYSTEM_SDL2=ON ) + use upnp && mycmakeargs+=( -DUSE_SYSTEM_MINIUPNPC=ON ) + + cmake_src_configure +} + +src_test() { + cmake_build unittests +} + +src_install() { + cmake_src_install + + dodoc Readme.md + if use doc; then + dodoc -r docs/ActionReplay docs/DSP docs/WiiMote + fi + + # Add pax markings for hardened systems + pax-mark -m "${ED}"/usr/bin/"${PN}"{-emu{,-nogui},-tool} +} + +pkg_postinst() { + xdg_desktop_database_update + xdg_icon_cache_update +} + +pkg_postrm() { + xdg_desktop_database_update + xdg_icon_cache_update +}
