commit:     6e71565f07fb13a78aa20a386c100af3ebd48e3d
Author:     Alfred Wingate <parona <AT> protonmail <DOT> com>
AuthorDate: Fri Mar 13 23:05:57 2026 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Mar 14 06:14:34 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6e71565f

games-emulation/dolphin: add 2603

* Migrate to llvm-r2 and enable llvm21 support.
* Unbundle mgba.
* Hook up retro-achievements support conditionally, bug #965016.
* Rename discord-presence flag to discord to match with the rest of the
  tree.

Bug: https://bugs.gentoo.org/965016
Signed-off-by: Alfred Wingate <parona <AT> protonmail.com>
Part-of: https://codeberg.org/gentoo/gentoo/pulls/315
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 games-emulation/dolphin/Manifest                   |  5 ++
 .../{dolphin-9999.ebuild => dolphin-2603.ebuild}   | 69 ++++++++++------------
 games-emulation/dolphin/dolphin-9999.ebuild        | 65 ++++++++------------
 .../files/dolphin-2603-mbgba-definitions.patch     | 20 +++++++
 games-emulation/dolphin/metadata.xml               |  4 +-
 5 files changed, 84 insertions(+), 79 deletions(-)

diff --git a/games-emulation/dolphin/Manifest b/games-emulation/dolphin/Manifest
index ac0bcc4436a9..602aa13187f4 100644
--- a/games-emulation/dolphin/Manifest
+++ b/games-emulation/dolphin/Manifest
@@ -1,11 +1,16 @@
 DIST Vulkan-Headers-39f924b810e561fd86b2558b6711ca68d4363f68.tar.gz 2497345 
BLAKE2B 
66c276e4ecb6f648fb0ba7f211edda51d6ef8c439b88abdafd0bb33a7aa255e9189e88ef2a40179e9ab8433c82f98cbb40a8aaadbbd6a6e72c7a838ad68d07ae
 SHA512 
2d722e32e3c5a217a62d0583fd1597fcf5e05c7092f0c629f54025ae8fdb22b12dba375d1aeeeb90e4a69507e254f33aebe435bf8f058f55a5ed3f5e6d351d6f
 DIST VulkanMemoryAllocator-3bab6924988e5f19bf36586a496156cf72f70d9f.tar.gz 
937902 BLAKE2B 
d4c9d002ab787045e4d117237c3f7d031ec4dae514e958881529c6dc11cc6105dd57a26f214791f8e0943e2cfa105f90e99ee958b97c1c386ef44fcaad6b7d33
 SHA512 
6e2935ce6fbafc2cc8c5a34bf3eaa5dc2e8f65c97c886cfa57da0b45ca83bc8ade4429a7556ce6292af9aeb947d69231b50ae64a55a281c304176e8ea1cd2098
+DIST cpp-ipc-ce0773b3e6d5abaa8d104100c5704321113853ca.tar.gz 663617 BLAKE2B 
33db214000a1bf4bd0d6597680bebd72b54d88a78ff4e30ebf819fcd228e3e5d9dd1ce162d008f4d26722a03b1f13e08afcd3baed49bdd5438342814803741d9
 SHA512 
3cfbb566d153106e2b148d89d79ffcd0a7f73a24455ecb2c346c4b30cb302d7cfc4a8aec196cfab804fe6fb8bebad6afadf6d23a7b25b95d4b2c8d92dda3bfab
+DIST cpp-optparse-2265d647232249a53a03b411099863ceca35f0d3.tar.gz 13010 
BLAKE2B 
5a23625b98bb45c6e32174de47eb793ab9627e97df4935cdf0d3bfe43fe328488d2db0fa7987030778e03f17b9220a7990a5193e3728f1df4e9923173025979c
 SHA512 
6b99478738980df3186b8487a33c96ee80107ed35fdd36cf615a53f58e9b1e72ab6099c2081e3622fa374f338609e747a1aa0c6c1295f2f71dea1ed17dbc6cf2
 DIST dolphin-2506.tar.gz 19891520 BLAKE2B 
ffff679899d70322b5b02f2b045cd063123a9c94fa65641af9597d41cd88849c971179f0131d4db8d4ce8090e70052cf6bbd2b19e720794adb1977b8ed48037e
 SHA512 
7f2a053e18f53c535c9de6e67a098d92e8ffaa240f8cc44ce5b0db19e506373f31eefecfe7d215d69e054ed0254f92ce96f73f2cb737df86d2b55cdc4fdc4ac3
 DIST dolphin-2509.tar.gz 19735915 BLAKE2B 
cc52b0e1eca0f8b874852b7914415a8f58d3d12dd0d0c26ec03ac9e1ad7a1834e78f325107e08b2447ee76f03dea5d63995f03012f6892889383379dab0dabd0
 SHA512 
26f28c4d851ca4b8c1dd2d084a2e744b4df3bc83d479389ccd5bca81f2b804936d7d6df5f5100de3dcbedda9851a84f6daf96b408a306ccc29ebb6b3f4211003
+DIST dolphin-2603.tar.gz 17523891 BLAKE2B 
c88fa6b3e0a98127cfeb2daf23a5357c3052651fb0fa109b5f56c9df72e62ac9e03ecdcc1702a93c989f8031dff13918e1a85f082a14b8ed000eec8bf9c0d880
 SHA512 
b6398da1c8e469bed3bc8aa784f6b8fd7cacce639ac97f827f3bd6cd037160f581a2eb126fc2e7af5f5b0c8c6c287721c7bb87bdc2c0b6a04484b0ce89018521
+DIST imgui-45acd5e0e82f4c954432533ae9985ff0e1aad6d5.tar.gz 1934859 BLAKE2B 
bbd1824f98716ef7ae09811817e014882a194cbf3cdf5e9efe924c8b722920493ca9776771880310e73740ab88b1498e10ca84bdfad6fc3e47e3fd7041ed01ac
 SHA512 
76fd04305cb48cf6bfa5c5dc884738137bd5c08f2ce12dfd77c1fc9b9294e6c592739d3ec4ceab7d65226775c3be5076710b58bcc40b8abed7da3620db3be511
 DIST implot-18c72431f8265e2b0b5378a3a73d8a883b2175ff.tar.gz 138121 BLAKE2B 
481fe2b4ebd1ab3554465aff07b2c2e85f2db033de1ac69b95bcf56d269fcf01d8a0f951ad45ddcc0e192f1cc6cac3478633f006f403b8e930350891945ae87f
 SHA512 
9cb2581a4e8d844914606f55a667afcfb31374973b0035b4d81488253e350df67439e97b46b236324c2a1e01146e6a191ad94d70823a3888c97e9380715272fa
 DIST implot-3da8bd34299965d3b0ab124df743fe3e076fa222.tar.gz 141430 BLAKE2B 
5fde32ccb24a8ceaa125e188fce9faf087fa5d2294379fc6bb31071878c4b63adb998aa0100dc48ed7a379d2b1cd49e109a150bec5ebf521f70d661673b4e4a8
 SHA512 
8a95f76ae4a14adf6f3bcd798d2334d8282ff7b50fc7def6308c0556adcc1dbd151c0a36aa676a82e10e1ae80d1ecc1ac54e705180650eed46d0a609611c73c5
 DIST mgba-8739b22fbc90fdf0b4f6612ef9c0520f0ba44a51.tar.gz 14488880 BLAKE2B 
5beec2de9a0999a93a4ad704f45246b551824a9ddd576a5b77e731b269fb8f7d311d1c4e2cfb217f34e22a49050498c70e52d714d9c0bb7b4e4d178f49f15c3d
 SHA512 
782d456b7bf827591c774f146a88821b41b3b936faefddb5aee82bb0dd16ca7ad7228a1c331e1e517eac40a71cc4c94cc44bee12560946328c8433e1c6327225
 DIST minizip-ng-55db144e03027b43263e5ebcb599bf0878ba58de.tar.gz 772757 BLAKE2B 
853a252d2a8f8c0668804cf961626413aaf89a7eb85b27142860e379e933a54c0d847d976b007071636461b29dd85d6b910d44a6c140581b983b59b14bc4fd9c
 SHA512 
88d1222886a3b5cd3ca1aff7b12902d1d19462c446ef39a092a56bb91b5889956afcce047b4227c79a50a95d9275bd0a23f5cd6cbef76478b6e21bbf86dd486b
+DIST rcheevos-926e4608f8dca7989267c787bbefb3ab1c835ac5.tar.gz 434643 BLAKE2B 
f54caf0b0506eb4c4d0e2c12c0ab4389fb4b25b1b920dc84eabdf0ecec33e4015ea47309adbee746aec41f752c64dc0a71153479f837ae1ffeeea737a52644df
 SHA512 
a60ca1e5b02230fee20a3cd46f71f121a9cb24d2b6434644e8cc1c922e156dec572a56b46b36724a506735375959c34b1588ef44b7c6deae5fa30e9f35ed07b8
 DIST tinygltf-c5641f2c22d117da7971504591a8f6a41ece488b.tar.gz 5903179 BLAKE2B 
0ef4b36cf26f3a5a544d0c739317b8cce041121b1dec58d1d9dbc3bbc892df284d80aa4c45ec1ebc332ba96b151230a5b0dbf95b95aefcf86ee7878c393eda5d
 SHA512 
486bcf32be137dea5746117074dc51bc978290698de7831e1c4bbaa4acb56ed99fc34c38e69878a955b3e5f10f43eab07b0637164f822beae0fddd099aa0c56d
 DIST watcher-b03bdcfc11549df595b77239cefe2643943a3e2f.tar.gz 165510 BLAKE2B 
63df0dac02af6da4c736953145c959973e452d22fc30b4170adbcb5ed950bdf0ef33d2304fda58efdd5a99ad8a0b229429f93cd17eedf0310c345252e8222e88
 SHA512 
b1e4bad6564b5036f4bf66ea269b148c9818d5e6fa4626a0f7d04e65b81be737a0fbcd995c103681297240e78e54d8152825c1b6674a45e8bbe0c35b9bf900d0
 DIST zlib-ng-ce01b1e41da298334f8214389cc9369540a7560f.tar.gz 2223118 BLAKE2B 
c79a138c31c74c291ae38a6c4d8983e0884169ced4147d7242d1a766f70777de0368ceba815ac2261bd2543dba55a6106b70f7e040fae4f200863da217f88978
 SHA512 
73f4e56410ae298ef211ebab52b1a0d3d5bfae91c2de3cd294b56cd0a78ab50e1203b396c7df462f360c1aaaa9392ec5625473d1e9eb084cc64bc813e28d12a1

diff --git a/games-emulation/dolphin/dolphin-9999.ebuild 
b/games-emulation/dolphin/dolphin-2603.ebuild
similarity index 84%
copy from games-emulation/dolphin/dolphin-9999.ebuild
copy to games-emulation/dolphin/dolphin-2603.ebuild
index 609b7932ee12..17dfb796a648 100644
--- a/games-emulation/dolphin/dolphin-9999.ebuild
+++ b/games-emulation/dolphin/dolphin-2603.ebuild
@@ -1,12 +1,12 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
 
-LLVM_COMPAT=( {18..20} )
+LLVM_COMPAT=( {18..21} )
 LLVM_OPTIONAL=1
 
-inherit cmake llvm-r1 pax-utils xdg-utils
+inherit cmake llvm-r2 pax-utils xdg
 
 if [[ ${PV} == *9999 ]]; then
        inherit git-r3
@@ -14,20 +14,20 @@ if [[ ${PV} == *9999 ]]; then
        EGIT_SUBMODULES=(
                Externals/cpp-ipc/cpp-ipc
                Externals/cpp-optparse/cpp-optparse
-               Externals/mGBA/mgba
                Externals/imgui/imgui
                Externals/implot/implot
+               Externals/rcheevos/rcheevos
                Externals/tinygltf/tinygltf
                Externals/Vulkan-Headers
                Externals/VulkanMemoryAllocator
                Externals/watcher/watcher
        )
 else
-       CPPIPC_COMMIT=a0c7725a1441d18bc768d748a93e512a0fa7ab52
+       CPPIPC_COMMIT=ce0773b3e6d5abaa8d104100c5704321113853ca
        CPPOPTPARSE_COMMIT=2265d647232249a53a03b411099863ceca35f0d3
-       MGBA_COMMIT=8739b22fbc90fdf0b4f6612ef9c0520f0ba44a51
        IMGUI_COMMIT=45acd5e0e82f4c954432533ae9985ff0e1aad6d5
        IMPLOT_COMMIT=3da8bd34299965d3b0ab124df743fe3e076fa222
+       RCHEEVOS_COMMIT=926e4608f8dca7989267c787bbefb3ab1c835ac5
        TINYGLTF_COMMIT=c5641f2c22d117da7971504591a8f6a41ece488b
        VULKAN_HEADERS_COMMIT=39f924b810e561fd86b2558b6711ca68d4363f68
        VULKANMEMORYALLOCATOR_COMMIT=3bab6924988e5f19bf36586a496156cf72f70d9f
@@ -35,7 +35,7 @@ else
        SRC_URI="
                https://github.com/dolphin-emu/dolphin/archive/${PV}.tar.gz
                        -> ${P}.tar.gz
-               https://github.com/mutouyun/cpp-ipc/tree/${CPPIPC_COMMIT}.tar.gz
+               
https://github.com/mutouyun/cpp-ipc/archive/${CPPIPC_COMMIT}.tar.gz
                        -> cpp-ipc-${CPPIPC_COMMIT}.tar.gz
                
https://github.com/weisslj/cpp-optparse/archive/${CPPOPTPARSE_COMMIT}.tar.gz
                        -> cpp-optparse-${CPPOPTPARSE_COMMIT}.tar.gz
@@ -51,9 +51,9 @@ else
                        -> 
VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}.tar.gz
                
https://github.com/e-dant/watcher/archive/${WATCHER_COMMIT}.tar.gz
                        -> watcher-${WATCHER_COMMIT}.tar.gz
-               mgba? (
-                       
https://github.com/mgba-emu/mgba/archive/${MGBA_COMMIT}.tar.gz
-                               -> mgba-${MGBA_COMMIT}.tar.gz
+               retro-achievements? (
+                       
https://github.com/RetroAchievements/rcheevos/archive/${RCHEEVOS_COMMIT}.tar.gz
+                               -> rcheevos-${RCHEEVOS_COMMIT}.tar.gz
                )
        "
        KEYWORDS="~amd64 ~arm64"
@@ -65,8 +65,8 @@ 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
-       pulseaudio sdl systemd telemetry test upnp vulkan
+       alsa bluetooth discord doc egl +evdev ffmpeg +gui llvm log mgba
+       pulseaudio retro-achievements sdl systemd telemetry test upnp vulkan
 "
 REQUIRED_USE="
        mgba? ( gui )
@@ -74,6 +74,7 @@ REQUIRED_USE="
 "
 RESTRICT="!test? ( test )"
 
+# slot op: Uses Qt::GuiPrivate for qplatformnativeinterface.h
 RDEPEND="
        app-arch/bzip2:=
        >=app-arch/lz4-1.8:=
@@ -106,10 +107,11 @@ RDEPEND="
        )
        ffmpeg? ( media-video/ffmpeg:= )
        gui? (
-               dev-qt/qtbase:6[X,gui,widgets]
+               dev-qt/qtbase:6=[X,gui,widgets]
                dev-qt/qtsvg:6
        )
        llvm? ( $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}=') )
+       mgba? ( >=games-emulation/mgba-0.11:= )
        pulseaudio? ( media-libs/libpulse )
        sdl? ( >=media-libs/libsdl3-3.2.20 )
        systemd? ( sys-apps/systemd:0= )
@@ -148,22 +150,17 @@ declare -A KEEP_BUNDLED=(
        # FIXME: discord-rpc not packaged
        [discord-rpc]=MIT
 
-       [mGBA]=MPL-2.0
-
        [picojson]=BSD-2
        [expr]=MIT
        [rangeset]=ZLIB
        [FatFs]=FatFs
+       [rcheevos]=MIT
        [Vulkan-Headers]="|| ( Apache-2.0 MIT )"
        [VulkanMemoryAllocator]=MIT
        [watcher]=MIT
        [cpp-ipc]=MIT
 )
 
-PATCHES=(
-       "${FILESDIR}"/dolphin-2509-retroachievents-test.patch
-)
-
 add_bundled_licenses() {
        for license in ${KEEP_BUNDLED[@]}; do
                LICENSE+=" ${license}"
@@ -171,8 +168,12 @@ add_bundled_licenses() {
 }
 add_bundled_licenses
 
+PATCHES=(
+       "${FILESDIR}"/dolphin-2603-mbgba-definitions.patch
+)
+
 pkg_setup() {
-       use llvm && llvm-r1_pkg_setup
+       use llvm && llvm-r2_pkg_setup
 }
 
 src_prepare() {
@@ -185,8 +186,8 @@ src_prepare() {
                mv -T "${WORKDIR}/Vulkan-Headers-${VULKAN_HEADERS_COMMIT}" 
Externals/Vulkan-Headers || die
                mv -T 
"${WORKDIR}/VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}" 
Externals/VulkanMemoryAllocator || die
                mv -T "${WORKDIR}/watcher-${WATCHER_COMMIT}" 
Externals/watcher/watcher || die
-               if use mgba; then
-                       mv -T "${WORKDIR}/mgba-${MGBA_COMMIT}" 
Externals/mGBA/mgba || die
+               if use retro-achievements; then
+                       mv -T "${WORKDIR}/rcheevos-${RCHEEVOS_COMMIT}" 
Externals/rcheevos/rcheevos || die
                fi
        fi
 
@@ -203,6 +204,10 @@ src_prepare() {
        einfo "removing sources: ${remove[*]}"
        rm -r "${remove[@]}" || die
 
+       # Use ccache only when user did set FEATURES=ccache (or similar)
+       # # not when ccache binary is present in system (automagic).
+       sed -e '/include(CCache)/d' -i CMakeLists.txt || die
+
        # Remove dirty suffix: needed for netplay
        sed -i -e 's/--dirty/&=""/' CMake/ScmRevGen.cmake || die
 }
@@ -229,9 +234,9 @@ src_configure() {
                -DENABLE_VULKAN=$(usex vulkan)
                -DENCODE_FRAMEDUMPS=$(usex ffmpeg)
                -DFASTLOG=$(usex log)
-               -DUSE_DISCORD_PRESENCE=$(usex discord-presence)
+               -DUSE_DISCORD_PRESENCE=$(usex discord)
                -DUSE_MGBA=$(usex mgba)
-               -DUSE_RETRO_ACHIEVEMENTS=OFF
+               -DUSE_RETRO_ACHIEVEMENTS=$(usex retro-achievements)
                -DUSE_UPNP=$(usex upnp)
 
                -DCMAKE_DISABLE_FIND_PACKAGE_SYSTEMD=$(usex !systemd)
@@ -258,10 +263,6 @@ src_configure() {
                -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.
@@ -275,7 +276,7 @@ src_configure() {
        [[ ${PV} != *9999 ]] && mycmakeargs+=( 
-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON )
 
        use test && mycmakeargs+=( -DUSE_SYSTEM_GTEST=ON )
-       use mgba && mycmakeargs+=( -DUSE_SYSTEM_LIBMGBA=OFF )
+       use mgba && mycmakeargs+=( -DUSE_SYSTEM_LIBMGBA=ON )
        use sdl && mycmakeargs+=( -DUSE_SYSTEM_SDL3=ON )
        use upnp && mycmakeargs+=( -DUSE_SYSTEM_MINIUPNPC=ON )
 
@@ -297,13 +298,3 @@ src_install() {
        # 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
-}

diff --git a/games-emulation/dolphin/dolphin-9999.ebuild 
b/games-emulation/dolphin/dolphin-9999.ebuild
index 609b7932ee12..a66b4f92f13e 100644
--- a/games-emulation/dolphin/dolphin-9999.ebuild
+++ b/games-emulation/dolphin/dolphin-9999.ebuild
@@ -1,12 +1,12 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
 
-LLVM_COMPAT=( {18..20} )
+LLVM_COMPAT=( {18..21} )
 LLVM_OPTIONAL=1
 
-inherit cmake llvm-r1 pax-utils xdg-utils
+inherit cmake llvm-r2 pax-utils xdg
 
 if [[ ${PV} == *9999 ]]; then
        inherit git-r3
@@ -14,20 +14,20 @@ if [[ ${PV} == *9999 ]]; then
        EGIT_SUBMODULES=(
                Externals/cpp-ipc/cpp-ipc
                Externals/cpp-optparse/cpp-optparse
-               Externals/mGBA/mgba
                Externals/imgui/imgui
                Externals/implot/implot
+               Externals/rcheevos/rcheevos
                Externals/tinygltf/tinygltf
                Externals/Vulkan-Headers
                Externals/VulkanMemoryAllocator
                Externals/watcher/watcher
        )
 else
-       CPPIPC_COMMIT=a0c7725a1441d18bc768d748a93e512a0fa7ab52
+       CPPIPC_COMMIT=ce0773b3e6d5abaa8d104100c5704321113853ca
        CPPOPTPARSE_COMMIT=2265d647232249a53a03b411099863ceca35f0d3
-       MGBA_COMMIT=8739b22fbc90fdf0b4f6612ef9c0520f0ba44a51
        IMGUI_COMMIT=45acd5e0e82f4c954432533ae9985ff0e1aad6d5
        IMPLOT_COMMIT=3da8bd34299965d3b0ab124df743fe3e076fa222
+       RCHEEVOS_COMMIT=926e4608f8dca7989267c787bbefb3ab1c835ac5
        TINYGLTF_COMMIT=c5641f2c22d117da7971504591a8f6a41ece488b
        VULKAN_HEADERS_COMMIT=39f924b810e561fd86b2558b6711ca68d4363f68
        VULKANMEMORYALLOCATOR_COMMIT=3bab6924988e5f19bf36586a496156cf72f70d9f
@@ -35,7 +35,7 @@ else
        SRC_URI="
                https://github.com/dolphin-emu/dolphin/archive/${PV}.tar.gz
                        -> ${P}.tar.gz
-               https://github.com/mutouyun/cpp-ipc/tree/${CPPIPC_COMMIT}.tar.gz
+               
https://github.com/mutouyun/cpp-ipc/archive/${CPPIPC_COMMIT}.tar.gz
                        -> cpp-ipc-${CPPIPC_COMMIT}.tar.gz
                
https://github.com/weisslj/cpp-optparse/archive/${CPPOPTPARSE_COMMIT}.tar.gz
                        -> cpp-optparse-${CPPOPTPARSE_COMMIT}.tar.gz
@@ -51,9 +51,9 @@ else
                        -> 
VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}.tar.gz
                
https://github.com/e-dant/watcher/archive/${WATCHER_COMMIT}.tar.gz
                        -> watcher-${WATCHER_COMMIT}.tar.gz
-               mgba? (
-                       
https://github.com/mgba-emu/mgba/archive/${MGBA_COMMIT}.tar.gz
-                               -> mgba-${MGBA_COMMIT}.tar.gz
+               retro-achievements? (
+                       
https://github.com/RetroAchievements/rcheevos/archive/${RCHEEVOS_COMMIT}.tar.gz
+                               -> rcheevos-${RCHEEVOS_COMMIT}.tar.gz
                )
        "
        KEYWORDS="~amd64 ~arm64"
@@ -65,8 +65,8 @@ 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
-       pulseaudio sdl systemd telemetry test upnp vulkan
+       alsa bluetooth discord doc egl +evdev ffmpeg +gui llvm log mgba
+       pulseaudio retro-achievements sdl systemd telemetry test upnp vulkan
 "
 REQUIRED_USE="
        mgba? ( gui )
@@ -74,6 +74,7 @@ REQUIRED_USE="
 "
 RESTRICT="!test? ( test )"
 
+# slot op: Uses Qt::GuiPrivate for qplatformnativeinterface.h
 RDEPEND="
        app-arch/bzip2:=
        >=app-arch/lz4-1.8:=
@@ -106,10 +107,11 @@ RDEPEND="
        )
        ffmpeg? ( media-video/ffmpeg:= )
        gui? (
-               dev-qt/qtbase:6[X,gui,widgets]
+               dev-qt/qtbase:6=[X,gui,widgets]
                dev-qt/qtsvg:6
        )
        llvm? ( $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}=') )
+       mgba? ( >=games-emulation/mgba-0.11:= )
        pulseaudio? ( media-libs/libpulse )
        sdl? ( >=media-libs/libsdl3-3.2.20 )
        systemd? ( sys-apps/systemd:0= )
@@ -148,22 +150,17 @@ declare -A KEEP_BUNDLED=(
        # FIXME: discord-rpc not packaged
        [discord-rpc]=MIT
 
-       [mGBA]=MPL-2.0
-
        [picojson]=BSD-2
        [expr]=MIT
        [rangeset]=ZLIB
        [FatFs]=FatFs
+       [rcheevos]=MIT
        [Vulkan-Headers]="|| ( Apache-2.0 MIT )"
        [VulkanMemoryAllocator]=MIT
        [watcher]=MIT
        [cpp-ipc]=MIT
 )
 
-PATCHES=(
-       "${FILESDIR}"/dolphin-2509-retroachievents-test.patch
-)
-
 add_bundled_licenses() {
        for license in ${KEEP_BUNDLED[@]}; do
                LICENSE+=" ${license}"
@@ -172,7 +169,7 @@ add_bundled_licenses() {
 add_bundled_licenses
 
 pkg_setup() {
-       use llvm && llvm-r1_pkg_setup
+       use llvm && llvm-r2_pkg_setup
 }
 
 src_prepare() {
@@ -185,8 +182,8 @@ src_prepare() {
                mv -T "${WORKDIR}/Vulkan-Headers-${VULKAN_HEADERS_COMMIT}" 
Externals/Vulkan-Headers || die
                mv -T 
"${WORKDIR}/VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}" 
Externals/VulkanMemoryAllocator || die
                mv -T "${WORKDIR}/watcher-${WATCHER_COMMIT}" 
Externals/watcher/watcher || die
-               if use mgba; then
-                       mv -T "${WORKDIR}/mgba-${MGBA_COMMIT}" 
Externals/mGBA/mgba || die
+               if use retro-achievements; then
+                       mv -T "${WORKDIR}/rcheevos-${RCHEEVOS_COMMIT}" 
Externals/rcheevos/rcheevos || die
                fi
        fi
 
@@ -203,6 +200,10 @@ src_prepare() {
        einfo "removing sources: ${remove[*]}"
        rm -r "${remove[@]}" || die
 
+       # Use ccache only when user did set FEATURES=ccache (or similar)
+       # # not when ccache binary is present in system (automagic).
+       sed -e '/include(CCache)/d' -i CMakeLists.txt || die
+
        # Remove dirty suffix: needed for netplay
        sed -i -e 's/--dirty/&=""/' CMake/ScmRevGen.cmake || die
 }
@@ -229,9 +230,9 @@ src_configure() {
                -DENABLE_VULKAN=$(usex vulkan)
                -DENCODE_FRAMEDUMPS=$(usex ffmpeg)
                -DFASTLOG=$(usex log)
-               -DUSE_DISCORD_PRESENCE=$(usex discord-presence)
+               -DUSE_DISCORD_PRESENCE=$(usex discord)
                -DUSE_MGBA=$(usex mgba)
-               -DUSE_RETRO_ACHIEVEMENTS=OFF
+               -DUSE_RETRO_ACHIEVEMENTS=$(usex retro-achievements)
                -DUSE_UPNP=$(usex upnp)
 
                -DCMAKE_DISABLE_FIND_PACKAGE_SYSTEMD=$(usex !systemd)
@@ -258,10 +259,6 @@ src_configure() {
                -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.
@@ -275,7 +272,7 @@ src_configure() {
        [[ ${PV} != *9999 ]] && mycmakeargs+=( 
-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON )
 
        use test && mycmakeargs+=( -DUSE_SYSTEM_GTEST=ON )
-       use mgba && mycmakeargs+=( -DUSE_SYSTEM_LIBMGBA=OFF )
+       use mgba && mycmakeargs+=( -DUSE_SYSTEM_LIBMGBA=ON )
        use sdl && mycmakeargs+=( -DUSE_SYSTEM_SDL3=ON )
        use upnp && mycmakeargs+=( -DUSE_SYSTEM_MINIUPNPC=ON )
 
@@ -297,13 +294,3 @@ src_install() {
        # 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
-}

diff --git a/games-emulation/dolphin/files/dolphin-2603-mbgba-definitions.patch 
b/games-emulation/dolphin/files/dolphin-2603-mbgba-definitions.patch
new file mode 100644
index 000000000000..3693652befdc
--- /dev/null
+++ b/games-emulation/dolphin/files/dolphin-2603-mbgba-definitions.patch
@@ -0,0 +1,20 @@
+https://github.com/dolphin-emu/dolphin/pull/14459
+
+From 93cec810e8c5e2a82fb205a3f5286cbdf378efb8 Mon Sep 17 00:00:00 2001
+From: Alfred Wingate <[email protected]>
+Date: Fri, 13 Mar 2026 18:46:24 +0200
+Subject: [PATCH] FindLIBMGBA: pass the same preprocessor arguments as the
+ bundled libmgba
+
+These are required if you build against a system libmgba as well.
+
+See-Also: 6d5e8b9ed8ced1ca180b4634fd2d36f35a34d240
+Signed-off-by: Alfred Wingate <[email protected]>
+--- a/CMake/FindLIBMGBA.cmake
++++ b/CMake/FindLIBMGBA.cmake
+@@ -12,4 +12,5 @@ if(LIBMGBA_FOUND AND NOT mGBA::mgba)
+     IMPORTED_LOCATION "${LIBMGBA_LIBRARY}"
+     INTERFACE_INCLUDE_DIRECTORIES "${LIBMGBA_INCLUDE_DIR}"
+   )
++  target_compile_definitions(mGBA::mgba INTERFACE HAVE_CRC32 ENABLE_VFS 
ENABLE_DIRECTORIES)
+ endif()

diff --git a/games-emulation/dolphin/metadata.xml 
b/games-emulation/dolphin/metadata.xml
index 7685ff38cd60..f97b214c9d55 100644
--- a/games-emulation/dolphin/metadata.xml
+++ b/games-emulation/dolphin/metadata.xml
@@ -10,11 +10,13 @@
                <name>Gentoo Games Project</name>
        </maintainer>
        <use>
+               <flag name="discord">Enables Discord Rich Presence, show the 
current game on Discord</flag>
                <flag name="discord-presence">Enables Discord Rich Presence, 
show the current game on Discord</flag>
                <flag name="evdev">Enable evdev input support</flag>
                <flag name="llvm">Enables LLVM support, for disassembly</flag>
                <flag name="log">Increase logging output</flag>
-               <flag name="mgba">Enables GBA controllers emulation using 
libmgba.</flag>
+               <flag name="mgba">Enables GBA controllers emulation with 
<pkg>games-emulation/mgba</pkg></flag>
+               <flag name="retro-achievements">Enables integration with 
retroachievements.org</flag>
        </use>
        <longdescription lang="en">
                Dolphin is a Gamecube and Wii emulator. Most games run 
perfectly or with

Reply via email to