games-emulation/eden: new package, add 0.0.3_rc2

Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
This commit is contained in:
Pavel Sobolev
2025-08-02 10:31:50 +03:00
parent bd0f054285
commit 2ee8d3cdcc
10 changed files with 364 additions and 0 deletions

View File

@@ -0,0 +1 @@
DIST eden-0.0.3_rc2.tar.gz 33625981 BLAKE2B c570dcf78e2cfd00e43ef55f0586c95313b66a8f8026c770060f103dfbc8b995232f2fd6077654ad0b5e48546d63bfed90b2021992a26f38816cafde82f8627e SHA512 c69f9693888251d2d9e23fcd38519a33a0ea350cae913b31ff67342fab4e83c404547753fb62004d01bade4f2c132c448298bbfe30311977aa67ef8bb982abf5

View File

@@ -0,0 +1,166 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake xdg
DESCRIPTION="Nintendo Switch Emulator"
HOMEPAGE="https://eden-emu.dev"
SRC_URI="https://git.eden-emu.dev/eden-emu/eden/archive/v${PV/_/-}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}"
LICENSE="GPL-3+"
SLOT="0"
KEYWORDS="~amd64"
IUSE="camera cubeb discord gui lto sdl ssl test web-applet wifi"
REQUIRED_USE="!gui? ( !camera !discord !web-applet )"
RESTRICT="!test? ( test )"
RDEPEND="
app-arch/lz4
app-arch/zstd
dev-cpp/cpp-httplib:=[ssl]
dev-libs/libfmt:=
dev-libs/libusb
dev-libs/sirit
dev-util/spirv-tools
llvm-core/llvm
media-libs/libva
media-libs/opus
media-video/ffmpeg
net-libs/enet
net-libs/mbedtls:0[cmac]
sys-libs/zlib
amd64? ( dev-libs/dynarmic )
arm64? ( dev-libs/dynarmic )
camera? ( dev-qt/qtmultimedia:6 )
cubeb? ( media-libs/cubeb )
discord? (
dev-libs/discord-rpc
dev-qt/qtbase:6[network]
)
gui? (
dev-libs/quazip[qt6]
dev-qt/qtbase:6[concurrent,dbus,widgets]
)
sdl? ( media-libs/libsdl2 )
ssl? ( dev-libs/openssl:= )
web-applet? ( dev-qt/qtwebengine:6[widgets] )
wifi? ( net-wireless/wireless-tools )
"
DEPEND="
${RDEPEND}
dev-cpp/cpp-jwt
dev-cpp/nlohmann_json
dev-cpp/simpleini
dev-libs/boost:=[context]
dev-util/vulkan-headers
dev-util/vulkan-utility-libraries
games-util/gamemode
media-gfx/renderdoc
media-libs/VulkanMemoryAllocator
sys-libs/timezone-data
amd64? ( dev-libs/xbyak )
arm64? ( dev-libs/oaknut )
x86? ( dev-libs/xbyak )
"
BDEPEND="
dev-build/make
dev-vcs/git
sys-apps/coreutils
virtual/pkgconfig
test? ( dev-cpp/catch )
"
PATCHES=(
"${FILESDIR}/${PN}-0.0.3_rc2-add-a-missing-include-for-the-log-header.patch"
"${FILESDIR}/${PN}-0.0.3_rc2-move-the-definition-of-create_target_directory_group.patch"
"${FILESDIR}/${PN}-0.0.3_rc2-relax-the-dependency-on-httplib.patch"
"${FILESDIR}/${PN}-0.0.3_rc2-use-the-system-Boost-library.patch"
"${FILESDIR}/${PN}-0.0.3_rc2-use-the-system-mbedtls-library.patch"
"${FILESDIR}/${PN}-0.0.3_rc2-use-the-system-QuaZip-library.patch"
"${FILESDIR}/${PN}-0.0.3_rc2-use-the-system-sirit-library.patch"
)
# [directory]=license
declare -A KEEP_BUNDLED=(
# Generated or copied files for internal usage
[bc_decoder]=MPL-2.0
[cmake-modules]=Boost-1.0
[FidelityFX-FSR]=MIT
[glad]=GPL-2+
[microprofile]=public-domain
[nx_tzdb]="GPL-2+ MIT"
[stb]="MIT public-domain"
[tz]=BSD-2
)
add_bundled_licenses() {
for license in "${KEEP_BUNDLED[@]}"; do
if [[ -n "$license" ]]; then
LICENSE+=" ${license}"
fi
done
}
add_bundled_licenses
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
cmake_src_prepare
}
src_configure() {
local mycmakeargs=(
-DYUZU_CHECK_SUBMODULES=no
-DYUZU_ENABLE_PORTABLE=no
-DYUZU_USE_BUNDLED_FFMPEG=no
-DYUZU_USE_BUNDLED_SDL2=no
-DYUZU_USE_EXTERNAL_SDL2=no
-DYUZU_USE_EXTERNAL_VULKAN_HEADERS=no
-DYUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS=no
-DYUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES=no
-DYUZU_USE_PRECOMPILED_HEADERS=no
-DTZDB2NX_VERSION=gentoo
-DTZDB2NX_ZONEINFO_DIR=/usr/share/zoneinfo
-DENABLE_CUBEB=$(usex cubeb)
-DENABLE_OPENSSL=$(usex ssl)
-DENABLE_QT=$(usex gui)
-DENABLE_SDL2=$(usex sdl)
-DENABLE_WIFI_SCAN=$(usex wifi)
-DUSE_DISCORD_PRESENCE=$(usex discord)
-DYUZU_ENABLE_LTO=$(usex lto)
-DYUZU_TESTS=$(usex test)
-DYUZU_USE_QT_MULTIMEDIA=$(usex camera)
-DYUZU_USE_QT_WEB_ENGINE=$(usex web-applet)
# Support for this flag is broken by upstream
-DENABLE_WEB_SERVICE=yes
-Wno-dev
)
cmake_src_configure
}
src_test() {
cd "${BUILD_DIR}" || die
# See https://git.eden-emu.dev/eden-emu/eden/issues/126
./bin/tests "~Fibers::InterExchange" "~RingBuffer: Threaded Test"
}

View File

@@ -0,0 +1,15 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Add a missing `include` for the log header.
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp
+++ b/src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp
@@ -4,6 +4,7 @@
#include <mutex>
#include "common/common_types.h"
+#include "common/logging/log.h"
#include "core/hle/service/nvnflinger/hos_binder_driver_server.h"
namespace Service::Nvnflinger {

View File

@@ -0,0 +1,59 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Move the definition of `create_target_directory_groups`.
This way, the function can be used by the external projects.
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -455,6 +455,24 @@ set(FFmpeg_COMPONENTS
avutil
swscale)
+# This function should be passed a list of all files in a target. It will automatically generate
+# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the
+# one in the filesystem.
+function(create_target_directory_groups target_name)
+ # Place any files that aren't in the source list in a separate group so that they don't get in
+ # the way.
+ source_group("Other Files" REGULAR_EXPRESSION ".")
+
+ get_target_property(target_sources "${target_name}" SOURCES)
+
+ foreach(file_name IN LISTS target_sources)
+ get_filename_component(dir_name "${file_name}" PATH)
+ # Group names use '\' as a separator even though the entire rest of CMake uses '/'...
+ string(REPLACE "/" "\\" group_name "${dir_name}")
+ source_group("${group_name}" FILES "${file_name}")
+ endforeach()
+endfunction()
+
add_subdirectory(externals)
if (ENABLE_QT)
@@ -628,24 +646,6 @@ endif()
# Include source code
# ===================
-# This function should be passed a list of all files in a target. It will automatically generate
-# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the
-# one in the filesystem.
-function(create_target_directory_groups target_name)
- # Place any files that aren't in the source list in a separate group so that they don't get in
- # the way.
- source_group("Other Files" REGULAR_EXPRESSION ".")
-
- get_target_property(target_sources "${target_name}" SOURCES)
-
- foreach(file_name IN LISTS target_sources)
- get_filename_component(dir_name "${file_name}" PATH)
- # Group names use '\' as a separator even though the entire rest of CMake uses '/'...
- string(REPLACE "/" "\\" group_name "${dir_name}")
- source_group("${group_name}" FILES "${file_name}")
- endforeach()
-endfunction()
-
# Adjustments for MSVC + Ninja
if (MSVC AND CMAKE_GENERATOR STREQUAL "Ninja")
add_compile_options(

View File

@@ -0,0 +1,16 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Relax the dependency on `httplib`.
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -404,7 +404,7 @@ if (ENABLE_WEB_SERVICE)
endif()
if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER)
- find_package(httplib 0.12 MODULE COMPONENTS OpenSSL)
+ find_package(httplib MODULE COMPONENTS OpenSSL REQUIRED)
endif()
if (YUZU_TESTS)

View File

@@ -0,0 +1,16 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Use the system `Boost` library.
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -161,7 +161,7 @@ if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
endif()
# Boost headers
-add_subdirectory(boost-headers)
+find_package(Boost COMPONENTS context REQUIRED GLOBAL)
# TZDB (Time Zone Database)
add_subdirectory(nx_tzdb)

View File

@@ -0,0 +1,22 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Use the system `QuaZip` library.
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/src/yuzu/externals/CMakeLists.txt
+++ b/src/yuzu/externals/CMakeLists.txt
@@ -5,13 +5,4 @@ set(BUILD_TESTING OFF)
set(BUILD_SHARED_LIBS OFF)
# QuaZip
-include(CPM)
-set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
-set(CPM_USE_LOCAL_PACKAGES ON)
-
-CPMAddPackage(
- NAME QuaZip-Qt6
- VERSION 1.3
- GIT_REPOSITORY "https://github.com/crueter/quazip-qt6.git"
- GIT_TAG v1.5-qt6
-)
+find_package(QuaZip-Qt6 REQUIRED)

View File

@@ -0,0 +1,33 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Use the system `mbedtls` library.
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -40,13 +40,7 @@ endif()
add_subdirectory(glad)
# mbedtls
-add_subdirectory(mbedtls)
-target_include_directories(mbedtls PUBLIC ./mbedtls/include)
-if (NOT MSVC)
- target_compile_options(mbedcrypto PRIVATE
- -Wno-unused-but-set-variable
- -Wno-string-concatenation)
-endif()
+add_library(mbedtls SHARED IMPORTED)
# MicroProfile
add_library(microprofile INTERFACE)
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1185,7 +1185,7 @@ else()
endif()
target_link_libraries(core PUBLIC common PRIVATE audio_core hid_core network video_core nx_tzdb tz)
-target_link_libraries(core PUBLIC Boost::headers PRIVATE fmt::fmt nlohmann_json::nlohmann_json mbedtls RenderDoc::API)
+target_link_libraries(core PUBLIC Boost::headers PRIVATE fmt::fmt nlohmann_json::nlohmann_json mbedtls mbedcrypto RenderDoc::API)
if (MINGW)
target_link_libraries(core PRIVATE ${MSWSOCK_LIBRARY})
endif()

View File

@@ -0,0 +1,16 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Use the system `sirit` library.
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -110,7 +110,7 @@ if (USE_DISCORD_PRESENCE AND NOT TARGET DiscordRPC::discord-rpc)
endif()
# Sirit
-add_subdirectory(sirit)
+add_library(sirit SHARED IMPORTED)
# httplib
if ((ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER) AND NOT TARGET httplib::httplib)

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>contact@paveloom.dev</email>
<name>Pavel Sobolev</name>
</maintainer>
<use>
<flag name="camera">Enable camera support</flag>
<flag name="cubeb">Enable the cubeb audio backend</flag>
<flag name="discord">Enable Discord Rich Presence</flag>
<flag name="sdl">Enable the SDL2 frontend</flag>
<flag name="ssl">Enable OpenSSL backend for ISslConnection</flag>
<flag name="web-applet">Enable web applet support</flag>
<flag name="wifi">Enable Wi-Fi scanning</flag>
</use>
<upstream>
<bugs-to>https://git.eden-emu.dev/eden-emu/eden/issues</bugs-to>
</upstream>
</pkgmetadata>