diff --git a/pkgs/development/libraries/zydis/default.nix b/pkgs/development/libraries/zydis/default.nix index 901d32b3959..c1b2c760dd2 100644 --- a/pkgs/development/libraries/zydis/default.nix +++ b/pkgs/development/libraries/zydis/default.nix @@ -1,9 +1,16 @@ { lib , stdenv , fetchFromGitHub +, callPackage , cmake +, python3 }: +let + zycore = callPackage ./zycore.nix { + inherit stdenv fetchFromGitHub cmake; + }; +in stdenv.mkDerivation rec { pname = "zydis"; version = "4.0.0"; @@ -12,14 +19,29 @@ stdenv.mkDerivation rec { owner = "zyantific"; repo = "zydis"; rev = "v${version}"; - fetchSubmodules = true; - sha256 = "sha256-WSBi8HUVj/JR0/0pBoEaUKD0kOk41gSW5ZW74fn8b4k="; + hash = "sha256-/no/8FNa5LlwhZMSMao4/cwZk6GlamLjqr+isbh6tEI="; }; - nativeBuildInputs = [ - cmake + nativeBuildInputs = [ cmake ]; + buildInputs = [ zycore ]; + cmakeFlags = [ + "-DZYAN_SYSTEM_ZYCORE=ON" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" ]; + doCheck = true; + checkInputs = [ python3 ]; + checkPhase = '' + pushd ../tests + python3 ./regression.py test ../build/ZydisInfo + python3 ./regression_encoder.py \ + ../build/Zydis{Fuzz{ReEncoding,Encoder},TestEncoderAbsolute} + popd + ''; + + passthru = { inherit zycore; }; + meta = with lib; { homepage = "https://zydis.re/"; description = "Fast and lightweight x86/x86-64 disassembler library"; diff --git a/pkgs/development/libraries/zydis/zycore.nix b/pkgs/development/libraries/zydis/zycore.nix new file mode 100644 index 00000000000..c0ad668d122 --- /dev/null +++ b/pkgs/development/libraries/zydis/zycore.nix @@ -0,0 +1,25 @@ +{ stdenv +, fetchFromGitHub +, cmake +}: + +stdenv.mkDerivation rec { + pname = "zycore"; + version = "1.4.1"; + + src = fetchFromGitHub { + owner = "zyantific"; + repo = "zycore-c"; + rev = "v${version}"; + hash = "sha256-kplUgrYecymGxz92tEU6H+NNtcN/Ao/tmmqdVo2c7HA="; + }; + + nativeBuildInputs = [ cmake ]; + + # The absolute paths set by the Nix CMake build manager confuse + # Zycore's config generation (which appends them to the package path). + cmakeFlags = [ + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ]; +}