dynarmic: init at 6.7.0-unstable-2025-03-16

Signed-off-by: Marcin Serwin <marcin@serwin.dev>
This commit is contained in:
Marcin Serwin
2025-07-23 12:24:43 +02:00
parent de73477ea6
commit c81ebc88b6
3 changed files with 201 additions and 0 deletions
@@ -0,0 +1,29 @@
From cdbf3ba41ddce41d8ae375464e514f72d158ec0b Mon Sep 17 00:00:00 2001
From: Marcin Serwin <marcin@serwin.dev>
Date: Sat, 5 Jul 2025 22:26:49 +0200
Subject: [PATCH] CMakeLists: update mcl version to 0.1.13
The mcl in externals is already at this version, but it wasn't bumped
here which makes it impossible to use prebuilt mcl.
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e95050da..edd153d0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -145,7 +145,7 @@ set(TSL_ROBIN_MAP_ENABLE_INSTALL ON)
find_package(Boost 1.57 REQUIRED)
find_package(fmt 9 CONFIG)
-find_package(mcl 0.1.12 EXACT CONFIG)
+find_package(mcl 0.1.13 EXACT CONFIG)
find_package(tsl-robin-map CONFIG)
if ("arm64" IN_LIST ARCHITECTURE OR DYNARMIC_TESTS)
--
2.49.0
@@ -0,0 +1,27 @@
From 40e8205b3efd126b9676a783c8306793e61d3f00 Mon Sep 17 00:00:00 2001
From: Marcin Serwin <marcin@serwin.dev>
Date: Sun, 6 Jul 2025 10:08:26 +0200
Subject: [PATCH] xbyak: Fix tests when using newer versions
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
---
src/dynarmic/CMakeLists.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/dynarmic/CMakeLists.txt b/src/dynarmic/CMakeLists.txt
index 6f0813ca..21a5576c 100644
--- a/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/CMakeLists.txt
@@ -267,6 +267,9 @@ if ("x86_64" IN_LIST ARCHITECTURE)
xbyak::xbyak
Zydis::Zydis
)
+ # Newer versions of xbyak (>= 7.25.0) have stricter checks that currently
+ # fail in dynarmic
+ target_compile_definitions(dynarmic PRIVATE XBYAK_STRICT_CHECK_MEM_REG_SIZE=0)
target_architecture_specific_sources(dynarmic "x86_64"
backend/x64/abi.cpp
--
2.49.0
+145
View File
@@ -0,0 +1,145 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
ninja,
boost,
robin-map,
catch2_3,
fmt,
xbyak,
zydis,
nix-update-script,
azahar,
darwin,
}:
let
oaknut = stdenv.mkDerivation {
pname = "oaknut";
version = "1.2.2-unstable-2024-03-01";
src = fetchFromGitHub {
owner = "merryhime";
repo = "oaknut";
rev = "94c726ce0338b054eb8cb5ea91de8fe6c19f4392";
hash = "sha256-IhP/110NGN42/FvpGIEm9MgsSiPYdtD8kNxL0cAWbqM=";
};
nativeBuildInputs = [
cmake
ninja
];
};
mcl = stdenv.mkDerivation {
pname = "mcl";
version = "0.1.13-unstable-2025-03-16";
src = fetchFromGitHub {
owner = "azahar-emu";
repo = "mcl";
rev = "7b08d83418f628b800dfac1c9a16c3f59036fbad";
hash = "sha256-uTOiOlMzKbZSjKjtVSqFU+9m8v8horoCq3wL0O2E8sI=";
};
nativeBuildInputs = [
cmake
ninja
];
buildInputs = [
fmt
];
checkInputs = [
catch2_3
];
doCheck = true;
checkPhase = ''
tests/mcl-tests
'';
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "dynarmic";
version = "6.7.0-unstable-2025-03-16";
src = fetchFromGitHub {
owner = "azahar-emu";
repo = "dynarmic";
rev = "278405bd71999ed3f3c77c5f78344a06fef798b9";
hash = "sha256-D7nXn5y0h8FV0V8Tc8uBlRoeEU+gcpt44afujZvG+1A=";
};
patches = [
# https://github.com/azahar-emu/dynarmic/pull/2
./0001-CMakeLists-update-mcl-version-to-0.1.13.patch
# https://github.com/azahar-emu/dynarmic/pull/3
./0001-xbyak-Fix-tests-when-using-newer-versions.patch
];
strictDeps = true;
nativeBuildInputs =
[
cmake
ninja
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
darwin.DarwinTools # sw_ver
darwin.bootstrap_cmds # mig
];
buildInputs =
[
boost
robin-map
mcl
fmt
]
++ lib.optionals stdenv.hostPlatform.isAarch64 [
oaknut
]
++ lib.optionals stdenv.hostPlatform.isx86_64 [
xbyak
zydis
];
checkInputs = [
catch2_3
oaknut
];
# This changes `ir/opt` to `ir/var/empty` in `CMakeLists.txt`
# making the build fail, as that path does not exist
dontFixCmake = true;
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
(lib.cmakeBool "DYNARMIC_TESTS" finalAttrs.finalPackage.doCheck)
];
env = lib.optionalAttrs stdenv.cc.isGNU {
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117063
NIX_CFLAGS_COMPILE = "-Wno-error=stringop-overread";
};
doCheck = true;
passthru = {
inherit mcl oaknut;
updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
tests = { inherit azahar; };
};
meta = {
description = "Dynamic recompiler for ARM";
homepage = "https://github.com/azahar-emu/dynarmic";
maintainers = with lib.maintainers; [ marcin-serwin ];
license = lib.licenses.bsd0;
platforms = with lib.platforms; x86_64 ++ aarch64;
};
})