# Copyright 2020-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake xdg DESCRIPTION="A Nintendo 3DS emulator." HOMEPAGE="https://github.com/azahar-emu/azahar https://azahar-emu.org/" COMPAT_LIST_SHA="955c560089186a86a90b67f0427f6dfdabc1f177" DDS_KTX_SHA="c3ca8febc2457ab5c581604f3236a8a511fc2e45" LODEPNG_SHA="0b1d9ccfc2093e5d6620cd9a11d03ee6ff6705f5" SIRIT_SHA="37d49d2aa4c0a62f872720d6e5f2eaf90b2c95fa" SIRIT_SPIRV_HEADERS_SHA="3f17b2af6784bfa2c5aa5dbb8e0e74a607dd8b3b" SOUNDTOUCH_SHA="9ef8458d8561d9471dd20e9619e3be4cfe564796" SUB_DYNARMIC_SHA="278405bd71999ed3f3c77c5f78344a06fef798b9" XBYAK_SHA="0d67fd1530016b7c56f3cd74b3fca920f4c3e2b4" BISCUIT_SHA="8bd0f7538b9ed7bedf90e789ffbd9eaeb484b28d" CATCH_SHA="76f70b1403dbc0781216f49e20e45b71f7eccdd8" FMT_SHA="7b273fbb541c7c9058800bc613f4291274b2d26e" MCL_SHA="7b08d83418f628b800dfac1c9a16c3f59036fbad" OAKNUT_SHA="94c726ce0338b054eb8cb5ea91de8fe6c19f4392" ROBIN_MAP_SHA="054ec5ad67440fcd65e0497e5a27ef31f53fcc7f" ZYCORE_SHA="0b2432ced0884fd152b471d97ecf0258ff4d859f" ZYDIS_SHA="bffbb610cfea643b98e87658b9058382f7522807" SRC_URI="https://github.com/azahar-emu/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz https://github.com/lvandeve/lodepng/archive/${LODEPNG_SHA}.tar.gz -> ${PN}-lodepng-${LODEPNG_SHA:0:7}.tar.gz https://github.com/azahar-emu/dynarmic/archive/${SUB_DYNARMIC_SHA}.tar.gz -> ${PN}-dynarmic-${SUB_DYNARMIC_SHA:0:7}.tar.gz https://github.com/herumi/xbyak/archive/${XBYAK_SHA}.tar.gz -> ${PN}-xbyak-${XBYAK_SHA:0:7}.tar.gz https://codeberg.org/soundtouch/soundtouch/archive/${SOUNDTOUCH_SHA}.tar.gz -> ${PN}-soundtouch-${SOUNDTOUCH_SHA:0:7}.tar.gz https://github.com/septag/dds-ktx/archive/${DDS_KTX_SHA}.tar.gz -> ${PN}-dds-ktx-${DDS_KTX_SHA:0:7}.tar.gz https://github.com/azahar-emu/sirit/archive/${SIRIT_SHA}.tar.gz -> ${PN}-sirit-${SIRIT_SHA:0:7}.tar.gz https://github.com/KhronosGroup/SPIRV-Headers/archive/${SIRIT_SPIRV_HEADERS_SHA}.tar.gz -> ${PN}-sirit-spirv-headers-${SIRIT_SPIRV_HEADERS_SHA:0:7}.tar.gz https://github.com/lioncash/biscuit/archive/${BISCUIT_SHA}.tar.gz -> ${PN}-dynarmic-biscuit-${BISCUIT_SHA:0:7}.tar.gz https://github.com/catchorg/Catch2/archive/${CATCH_SHA}.tar.gz -> ${PN}-dynarmic-catch-${CATCH_SHA:0:7}.tar.gz https://github.com/fmtlib/fmt/archive/${FMT_SHA}.tar.gz -> ${PN}-dynarmic-fmt-${FMT_SHA:0:7}.tar.gz https://github.com/azahar-emu/mcl/archive/${MCL_SHA}.tar.gz -> ${PN}-dynarmic-mcl-${MCL_SHA:0:7}.tar.gz https://github.com/merryhime/oaknut/archive/${OAKNUT_SHA}.tar.gz -> ${PN}-dynarmic-oaknut-${OAKNUT_SHA:0:7}.tar.gz https://github.com/Tessil/robin-map/archive/${ROBIN_MAP_SHA}.tar.gz -> ${PN}-dynarmic-robin-map-${ROBIN_MAP_SHA:0:7}.tar.gz https://github.com/zyantific/zycore-c/archive/${ZYCORE_SHA}.tar.gz -> ${PN}-dynarmic-zycore-${ZYCORE_SHA:0:7}.tar.gz https://github.com/zyantific/zydis/archive/${ZYDIS_SHA}.tar.gz -> ${PN}-dynarmic-zydis-${ZYDIS_SHA:0:7}.tar.gz https://github.com/azahar-emu/compatibility-list/archive/${COMPAT_LIST_SHA}.tar.gz -> ${PN}-compatibility-list-${COMPAT_LIST_SHA}.tar.gz" LICENSE="ZLIB BSD GPL-2 LGPL-2.1" SLOT="0" # KEYWORDS="~amd64" IUSE="openal +qt6 scripting web-service" # System xbyak is still used by Dynarmic, but not Citra itself DEPEND="app-arch/zstd dev-cpp/robin-map dev-libs/boost:0[nls] dev-libs/crypto++:= dev-libs/openssl media-libs/cubeb dev-libs/inih dev-libs/libfmt dev-libs/mp dev-libs/teakra dev-libs/vulkan-memory-allocator >=dev-libs/xbyak-5.941 qt6? ( dev-qt/qtbase:6 dev-qt/qtmultimedia:6 ) dev-util/nihstro dev-util/glslang media-libs/faad2 media-libs/libsdl2 media-video/ffmpeg net-libs/enet:= virtual/libusb:1 openal? ( media-libs/openal )" RDEPEND="${DEPEND} media-libs/fdk-aac" BDEPEND="dev-cpp/catch:0 media-libs/fdk-aac" PATCHES=( "${FILESDIR}/${PN}-0001-system-libraries.patch" "${FILESDIR}/${PN}-0002-inih-fix.patch" "${FILESDIR}/${PN}-0003-boost-fix.patch" "${FILESDIR}/${PN}-0004-boost-1.87.patch" ) src_prepare() { rmdir "externals/lodepng/lodepng" \ "externals/"{soundtouch,dynarmic,fmt,xbyak,dds-ktx,sirit} || die mv "${WORKDIR}/soundtouch" "externals/soundtouch" || die mv "${WORKDIR}/dds-ktx-${DDS_KTX_SHA}" "externals/dds-ktx" || die mv "${WORKDIR}/dynarmic-${SUB_DYNARMIC_SHA}" "externals/dynarmic" || die rmdir "externals/dynarmic/externals/"{biscuit,catch,fmt,mcl,oaknut,robin-map,xbyak,zycore,zydis} || die mv "${WORKDIR}/biscuit-${BISCUIT_SHA}" externals/dynarmic/externals/biscuit || die mv "${WORKDIR}/Catch2-${CATCH_SHA}" externals/dynarmic/externals/catch || die mv "${WORKDIR}/fmt-${FMT_SHA}" externals/dynarmic/externals/fmt || die mv "${WORKDIR}/mcl-${MCL_SHA}" externals/dynarmic/externals/mcl || die mv "${WORKDIR}/oaknut-${OAKNUT_SHA}" externals/dynarmic/externals/oaknut || die mv "${WORKDIR}/robin-map-${ROBIN_MAP_SHA}" externals/dynarmic/externals/robin-map || die cp -r "${WORKDIR}/xbyak-${XBYAK_SHA}" externals/dynarmic/externals/xbyak || die mv "${WORKDIR}/zycore-c-${ZYCORE_SHA}" externals/dynarmic/externals/zycore || die mv "${WORKDIR}/zydis-${ZYDIS_SHA}" externals/dynarmic/externals/zydis || die mv "${WORKDIR}/lodepng-${LODEPNG_SHA}" "externals/lodepng/lodepng" || die mv "${WORKDIR}/sirit-${SIRIT_SHA}" "externals/sirit" || die rmdir "externals/sirit/externals/SPIRV-Headers" || die mv "${WORKDIR}/SPIRV-Headers-${SIRIT_SPIRV_HEADERS_SHA}" "externals/sirit/externals/SPIRV-Headers" cp -r "${WORKDIR}/xbyak-${XBYAK_SHA}" "externals/xbyak" || die rmdir "dist/compatibility_list" || die mv "${WORKDIR}/compatibility-list-${COMPAT_LIST_SHA}" "dist/compatibility_list" || die # shellcheck disable=SC2016 sed -e 's|${CMAKE_CURRENT_SOURCE_DIR}/xbyak/xbyak|/usr/include/xbyak|' \ -i externals/dynarmic/externals/CMakeLists.txt || die sed -re 's/-W(all|error)//g' -i externals/dynarmic/CMakeLists.txt \ externals/dynarmic/externals/catch/CMake/CatchMiscFunctions.cmake \ externals/dynarmic/externals/catch/CMakeLists.txt \ externals/dynarmic/externals/fmt/CMakeLists.txt \ externals/dynarmic/externals/mcl/CMakeLists.txt \ externals/dynarmic/externals/oaknut/CMakeLists.txt \ externals/dynarmic/externals/robin-map/tests/CMakeLists.txt \ externals/dynarmic/externals/zycore/CMakeLists.txt \ externals/dynarmic/externals/zycore/cmake/zyan-functions.cmake \ externals/sirit/CMakeLists.txt \ src/CMakeLists.txt || die cmake_src_prepare } src_configure() { local mycmakeargs=( "-DENABLE_OPENAL=$(usex openal)" "-DENABLE_QT=$(usex qt6)" "-DENABLE_SCRIPTING=$(usex scripting)" "-DENABLE_WEB_SERVICE=$(usex web-service)" -DBUILD_SHARED_LIBS=OFF -DCITRA_WARNINGS_AS_ERRORS=OFF -DDISABLE_SUBMODULE_CHECK=ON -DENABLE_TESTS=OFF -DUSE_SYSTEM_BOOST=ON -DUSE_SYSTEM_CATCH2=ON -DUSE_SYSTEM_CRYPTOPP=ON -DUSE_SYSTEM_CUBEB=ON -DUSE_SYSTEM_ENET=ON -DUSE_SYSTEM_FAAD2=ON -DUSE_SYSTEM_FMT=ON -DUSE_SYSTEM_GLSLANG=ON -DUSE_SYSTEM_INIH=ON -DUSE_SYSTEM_LIBUSB=ON -DUSE_SYSTEM_OPENAL=ON -DUSE_SYSTEM_OPENSSL=ON -DUSE_SYSTEM_SDL2=ON -DUSE_SYSTEM_TEAKRA=ON -DUSE_SYSTEM_XBYAK=OFF -DUSE_SYSTEM_ZSTD=ON -Wno-dev ) cmake_src_configure } src_install() { cmake_src_install local libdir libdir=$(get_libdir) rm -fR "${D}/usr/include" "${D}/usr/${libdir:?}" || die }