diff --git a/CMakeLists.txt b/CMakeLists.txt index 036f787..59cffbc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,8 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 17) include(FindPkgConfig) +include(GNUInstallDirs) + pkg_check_modules(riscv-riscv REQUIRED IMPORTED_TARGET riscv-riscv) pkg_check_modules(riscv-fesvr REQUIRED IMPORTED_TARGET riscv-fesvr) find_package(spdlog REQUIRED) diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..8b7d64e --- /dev/null +++ b/default.nix @@ -0,0 +1,23 @@ +{ stdenv +, cmake +, pkg-config +, spike +, mini-gdbstub +, spdlog +}: stdenv.mkDerivation { + pname = "spike-diff"; + version = "0.0.1"; + + src = ./.; + + nativeBuildInputs = [ + cmake + pkg-config + mini-gdbstub + ]; + + buildInputs = [ + spike + spdlog + ]; +} diff --git a/flake.nix b/flake.nix index 6632a41..eec6d61 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,23 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; } // nur-xin.packages.${system}; + + spike = pkgs.spike.overrideAttrs (self: super: { + pname = super.pname + "-rv32e"; + + src = pkgs.fetchFromGitHub { + owner = "riscv-software-src"; + repo = "riscv-isa-sim"; + rev = "2890ea72125b69eb96bb0458a5bbc00ce26e8872"; + hash = "sha256-gCtTmq4GhxoZit8fqJT0+E4XJiltM2ArlmLkEyJ68vk="; + }; + patches = [ ]; + configureFlags = [ "--with-isa=RV32E" "--enable-optional-subprojects" ]; + check = false; + doInstallCheck = false; + }); + + mini-gdbstub = nur-xin.packages.${system}.mini-gdbstub; in { checks = { @@ -33,6 +50,8 @@ }; }; + packages.default = pkgs.callPackage ./default.nix { inherit spike mini-gdbstub; }; + devShells.default = (pkgs.mkShell.override { stdenv = pkgs.ccacheStdenv; }) { inherit (self.checks.${system}.pre-commit-check) shellHook; nativeBuildInputs = self.checks.${system}.pre-commit-check.enabledPackages; diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 23d6f98..7ac15a0 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -7,3 +7,5 @@ target_link_libraries(spike-diff set_property(TARGET PROPERTY POSITION_INDEPENDENT_CODE ON) target_link_options(spike-diff PRIVATE -Wl,-E) + +install( TARGETS spike-diff )