diff --git a/dev-libs/dynarmic/Manifest b/dev-libs/dynarmic/Manifest new file mode 100644 index 0000000000..7d4de84e4a --- /dev/null +++ b/dev-libs/dynarmic/Manifest @@ -0,0 +1 @@ +DIST dynarmic-6.7.0.tar.gz 3748380 BLAKE2B 9f25e019f2a80486f11ebdb9872bea5345877074150024baadb959ae038b92bb550e0674f27f14c89cff2cab49ddb5d826c267303093934ae9db54791ba69dc8 SHA512 08b3c8783fd719651797566cbf3992c01fac8cce4dfadcdf22017706e926be2d9d6fcbabf20af8a61e3d8447ca477312dd89e7eec6c58a0965e8e1b14813d8c2 diff --git a/dev-libs/dynarmic/dynarmic-6.7.0.ebuild b/dev-libs/dynarmic/dynarmic-6.7.0.ebuild new file mode 100644 index 0000000000..119812bdd8 --- /dev/null +++ b/dev-libs/dynarmic/dynarmic-6.7.0.ebuild @@ -0,0 +1,61 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +EGIT_COMMIT="fa6cc2e4b2a2954f2298b6548174479c5b106c2a" + +DESCRIPTION="An ARM dynamic recompiler" +# This is a copy of the now-deleted repository `merryhime/dynarmic` +HOMEPAGE="https://github.com/lioncash/dynarmic" +SRC_URI="https://github.com/lioncash/dynarmic/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz" + +S="${WORKDIR}/${PN}-${EGIT_COMMIT}" + +LICENSE="0BSD" +SLOT="0" +KEYWORDS="~amd64" +IUSE="test" +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-cpp/robin-map + dev-libs/boost:= + dev-libs/libfmt:= + dev-libs/mcl + amd64? ( dev-libs/zydis ) +" +DEPEND=" + ${RDEPEND} + amd64? ( >=dev-libs/xbyak-7.25 ) + arm64? ( dev-libs/oaknut ) +" +BDEPEND=" + test? ( + dev-cpp/catch + dev-libs/oaknut + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-6.7.0-add-xbyak-as-a-system-library-rather-than-a-cmake-package.patch" + "${FILESDIR}/${PN}-6.7.0-relax-the-dependency-on-mcl.patch" +) + +src_prepare() { + find externals -mindepth 1 -not -path "externals/CMakeLists.txt" -delete + + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DDYNARMIC_USE_PRECOMPILED_HEADERS=no + -DDYNARMIC_TESTS=$(usex test) + -Wno-dev + ) + + cmake_src_configure +} diff --git a/dev-libs/dynarmic/files/dynarmic-6.7.0-add-xbyak-as-a-system-library-rather-than-a-cmake-package.patch b/dev-libs/dynarmic/files/dynarmic-6.7.0-add-xbyak-as-a-system-library-rather-than-a-cmake-package.patch new file mode 100644 index 0000000000..41cb32ad5f --- /dev/null +++ b/dev-libs/dynarmic/files/dynarmic-6.7.0-add-xbyak-as-a-system-library-rather-than-a-cmake-package.patch @@ -0,0 +1,19 @@ +From: Pavel Sobolev +Subject: [PATCH] Add `xbyak` as a system library rather than a CMake package. + +Signed-off-by: Pavel Sobolev + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -149,7 +149,11 @@ if ("arm64" IN_LIST ARCHITECTURE OR DYNARMIC_TESTS) + endif() + + if ("x86_64" IN_LIST ARCHITECTURE) +- find_package(xbyak 7 CONFIG) ++ add_library(xbyak INTERFACE) ++ add_library(xbyak::xbyak ALIAS xbyak) ++ target_compile_options(xbyak INTERFACE "-fno-operator-names") ++ target_compile_definitions(xbyak INTERFACE XBYAK_STRICT_CHECK_MEM_REG_SIZE=0) ++ + find_package(Zydis 4 CONFIG) + endif() diff --git a/dev-libs/dynarmic/files/dynarmic-6.7.0-relax-the-dependency-on-mcl.patch b/dev-libs/dynarmic/files/dynarmic-6.7.0-relax-the-dependency-on-mcl.patch new file mode 100644 index 0000000000..f1b268ca96 --- /dev/null +++ b/dev-libs/dynarmic/files/dynarmic-6.7.0-relax-the-dependency-on-mcl.patch @@ -0,0 +1,16 @@ +From: Pavel Sobolev +Subject: [PATCH] Relax the dependency on `mcl`. + +Signed-off-by: Pavel Sobolev + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -141,7 +141,7 @@ endif() + + find_package(Boost 1.57 REQUIRED) + find_package(fmt 9 CONFIG) +-find_package(mcl 0.1.12 EXACT CONFIG) ++find_package(mcl 0.1.12 CONFIG) + find_package(tsl-robin-map CONFIG) + + if ("arm64" IN_LIST ARCHITECTURE OR DYNARMIC_TESTS) diff --git a/dev-libs/dynarmic/metadata.xml b/dev-libs/dynarmic/metadata.xml new file mode 100644 index 0000000000..707ca157e3 --- /dev/null +++ b/dev-libs/dynarmic/metadata.xml @@ -0,0 +1,11 @@ + + + + + contact@paveloom.dev + Pavel Sobolev + + + lioncash/dynarmic + +