# 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" }