# Copyright 2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 CMAKE_BUILD_TYPE=Release inherit cmake desktop multiprocessing xdg DESCRIPTION="Experimental Symbian OS emulator" HOMEPAGE="https://eka2l1.com https://github.com/EKA2L1/EKA2L1" SHA="cd7041f58192899d7f2c3c29444487b0d6fefe0b" CAPSTONE_SHA="52c66920fc7bfa15fd9626dfd9f646c698aaa99b" _DYNARMIC_SHA="855e885288fc21a616ed07ee4437f34abe7c3922" FFMPEG_SHA="569633bfe198554354afefa59859a871ee28e551" LIBFAT_SHA="ea55c7a718780057e7fe0224d7423c4279fd3df7" LIBTESS2_SHA="fc52516467dfa124bdd967c15c7cf9faf02a34ca" LUNASVG_SHA="017bda5e3428d69bc40a8d44195b97c4f26d7bbe" MICROPROFILE_SHA="b910f4df7f670affec65c1a4dacbf6018c9e0f1b" MINIBAE_SHA="4a63a5d1a5ba50b71445b6a4b1efdd139872541b" RECTANGLEBINPACK_SHA="83e7e1132d93777e3732dfaae26b0f3703be2036" SDL_GAMECONTROLLERDB_SHA="a113e7fa25cc13ca6131b20a23568dc42c8a7dab" THREAD_POOL_SHA="6790920f61ab3e928ddaea835ab6a803d467f41d" TINYSOUNDFONT_SHA="e86d986ed6ccb93b4ee41d2de656c49c721b18db" UPSCALE_SHADERS_SHA="49dd304cb97e7c0871256f2bafba7b6fd41511cb" UVW_SHA="cf0f8c6fd4084900646b7c83b4682a12be76f10e" SRC_URI="https://github.com/EKA2L1/EKA2L1/archive/${SHA}.tar.gz -> ${P}.tar.gz https://github.com/capstone-engine/capstone/archive/${CAPSTONE_SHA}.tar.gz -> ${PN}-capstone-${CAPSTONE_SHA:0:7}.tar.gz https://github.com/EKA2L1/dynarmic/archive/${_DYNARMIC_SHA}.tar.gz -> ${PN}-dynarmic-${_DYNARMIC_SHA:0:7}.tar.gz https://github.com/EKA2L1/ffmpeg/archive/${FFMPEG_SHA}.tar.gz -> ${PN}-ffmpeg-${FFMPEG_SHA:0:7}.tar.gz https://github.com/Vita3K/libfat16/archive/${LIBFAT_SHA}.tar.gz -> ${PN}-libfat16-${LIBFAT_SHA:0:7}.tar.gz https://github.com/memononen/libtess2/archive/${LIBTESS2_SHA}.tar.gz -> ${PN}-libtess2-${LIBTESS2_SHA:0:7}.tar.gz https://github.com/EKA2L1/lunasvg/archive/${LUNASVG_SHA}.tar.gz -> ${PN}-lunasvg-${LUNASVG_SHA:0:7}.tar.gz https://github.com/jonasmr/microprofile/archive/${MICROPROFILE_SHA}.tar.gz -> ${PN}-microprofile-${MICROPROFILE_SHA:0:7}.tar.gz https://github.com/EKA2L1/miniBAE/archive/${MINIBAE_SHA}.tar.gz -> ${PN}-miniBAE-${MINIBAE_SHA:0:7}.tar.gz https://github.com/juj/RectangleBinPack/archive/${RECTANGLEBINPACK_SHA}.tar.gz -> ${PN}-RectangleBinPack-${RECTANGLEBINPACK_SHA:0:7}.tar.gz https://github.com/gabomdq/SDL_GameControllerDB/archive/${SDL_GAMECONTROLLERDB_SHA}.tar.gz -> ${PN}-SDL_GameControllerDB-${SDL_GAMECONTROLLERDB_SHA:0:7}.tar.gz https://github.com/bshoshany/thread-pool/archive/${THREAD_POOL_SHA}.tar.gz -> ${PN}-thread-pool-${THREAD_POOL_SHA:0:7}.tar.gz https://github.com/schellingb/TinySoundFont/archive/${TINYSOUNDFONT_SHA}.tar.gz -> ${PN}-TinySoundFont-${TINYSOUNDFONT_SHA:0:7}.tar.gz https://github.com/EKA2L1/upscale-shaders/archive/${UPSCALE_SHADERS_SHA}.tar.gz -> ${PN}-upscale-shaders-${UPSCALE_SHADERS_SHA:0:7}.tar.gz https://github.com/skypjack/uvw/archive/${UVW_SHA}.tar.gz -> ${PN}-uvw-${UVW_SHA:0:7}.tar.gz" S="${WORKDIR}/EKA2L1-${SHA}" # EKA2L1 GPL-3+, capstone BSD, dynarmic 0BSD, FFmpeg (with opencore-amr) LGPL-3+, # libtess2 SGI-B-2.0, miniBAE BSD, RectangleBinPack public-domain, # SDL_GameControllerDB ZLIB, upscale shaders GPL-2+ MIT, the rest MIT. LICENSE="0BSD BSD GPL-2+ GPL-3+ LGPL-3+ MIT SGI-B-2.0 ZLIB public-domain" SLOT="0" KEYWORDS="~amd64" DEPEND="app-arch/libarchive:= dev-cpp/yaml-cpp:= dev-db/sqlite:3 dev-lang/luajit:2 dev-libs/boost dev-libs/libfmt:= dev-libs/libuv:= dev-libs/pugixml dev-libs/re2:= dev-libs/spdlog:= dev-libs/stb dev-libs/wayland dev-libs/xxhash dev-qt/qtbase:6[gui,network,opengl,widgets] dev-qt/qtmultimedia:6 dev-qt/qtsvg:6 media-libs/cubeb media-libs/freetype media-libs/glm media-libs/libglvnd media-libs/libsdl2 media-libs/opencore-amr net-libs/mbedtls:3 net-libs/miniupnpc:= virtual/zlib:= x11-libs/libX11" RDEPEND="${DEPEND}" BDEPEND="dev-qt/qttools:6[linguist] virtual/pkgconfig amd64? ( dev-lang/nasm )" PATCHES=( "${FILESDIR}/${PN}-system-libs.patch" ) src_prepare() { local ext="${S}/src/external" dir for dir in capstone dynarmic ffmpeg libtess2 lunasvg microprofile miniBAE RectangleBinPack \ SDL_GameControllerDB thread-pool TinySoundFont uvw; do rmdir "${ext}/${dir}" || die mv "${WORKDIR}/${dir}-"* "${ext}/${dir}" || die done rmdir "${ext}/libfat" || die mv "${WORKDIR}/libfat16-${LIBFAT_SHA}" "${ext}/libfat" || die rmdir "${S}/src/emu/drivers/resources/upscale" || die mv "${WORKDIR}/upscale-shaders-${UPSCALE_SHADERS_SHA}" "${S}/src/emu/drivers/resources/upscale" || die cmake_src_prepare } src_configure() { local mycmakeargs=( # The emulator's internal libraries depend on each other cyclically. -DBUILD_SHARED_LIBS=OFF -DCCACHE_PROGRAM=CCACHE_PROGRAM-NOTFOUND -DEKA2L1_BUILD_TESTS=OFF -DEKA2L1_BUILD_TOOLS=OFF -DEKA2L1_ENABLE_QT_CAMERA=ON -DEKA2L1_FFMPEG_CACHE_DIR="${BUILD_DIR}/ffmpeg-cache" -DEKA2L1_FFMPEG_JOBS="$(makeopts_jobs)" -Wno-dev ) cmake_src_configure } src_install() { # The Qt frontend copies these next to itself, then seeds ~/.local/share/EKA2L1 from that # directory on every start. local dest dest="/usr/$(get_libdir)/${PN}" exeinto "${dest}" doexe "${BUILD_DIR}/bin/eka2l1_qt" insinto "${dest}" doins -r "${BUILD_DIR}"/bin/{compat,patch,resources,scripts} dosym -r "${dest}/eka2l1_qt" /usr/bin/eka2l1_qt domenu src/emu/qt/eka2l1.desktop doicon -s 128 src/emu/qt/assets/duck_tank.png einstalldocs }