From 04b6e1fa94ebfa2b788875515dcf66de98d0fb3f Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Tue, 13 Jun 2023 00:40:16 -0600 Subject: pkgs/gem5: initial commit --- flake.nix | 14 +++++++------ pkgs/default.nix | 1 + pkgs/gem5.nix | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 pkgs/gem5.nix diff --git a/flake.nix b/flake.nix index 0698666..dad75f0 100644 --- a/flake.nix +++ b/flake.nix @@ -37,12 +37,14 @@ formatter.${system} = pkgs.nixpkgs-fmt; packages.${system} = local pkgs pkgsNoLocal; - overlays.default = final: prev: let - locals = local final prev; - in { - local = locals; - unstable = (importPkgs unstable).extend self.overlays.default; - } // locals.override; + overlays.default = final: prev: + let + locals = local final prev; + in + { + local = locals; + unstable = (importPkgs unstable).extend self.overlays.default; + } // locals.override; nixosConfigurations = let diff --git a/pkgs/default.nix b/pkgs/default.nix index 9f161fa..f220934 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -4,6 +4,7 @@ let in { btclone = callPackage ./btclone { }; + gem5 = callPackage ./gem5.nix { gem5ISA = "x86"; }; git-aliases = callPackage ./git-aliases.nix { }; kbuild-standalone = callPackage ./kbuild-standalone.nix { }; mssql-tools = callPackage ./mssql-tools.nix { }; diff --git a/pkgs/gem5.nix b/pkgs/gem5.nix new file mode 100644 index 0000000..f9aebd7 --- /dev/null +++ b/pkgs/gem5.nix @@ -0,0 +1,64 @@ +{ boost +, lib +, fetchFromGitHub +, gnum4 +, gperftools +, hdf5-cpp +, libpng +, protobuf +, scons +, stdenv +, zlib +, enableHdf5 ? true +, enableLibpng ? true +, enableTrace ? true +, enableSystemC ? true +, enableTcmalloc ? true +, gem5ISA +}: +let + version = "22.1.0.0"; + + isa = assert lib.assertMsg (lib.elem gem5ISA [ "arm" "null" "mips" "power" "x86" ]) + "${gem5ISA} is not a valid gem5 target ISA"; + lib.toUpper gem5ISA; + + target = "build/${isa}/gem5.opt"; +in +stdenv.mkDerivation { + pname = "gem5"; + version = "${gem5ISA}-${version}"; + + src = fetchFromGitHub { + repo = "gem5"; + owner = "gem5"; + + rev = "v${version}"; + sha256 = "sha256-Yxag8emR6hf7oX4GAtQi/YYcKrpXicUoQg5+rjKyjc0="; + }; + + buildInputs = [ zlib ] + ++ lib.optional enableHdf5 hdf5-cpp + ++ lib.optional enableLibpng libpng + ++ lib.optional enableTrace boost + ++ lib.optional enableSystemC protobuf + ++ lib.optional enableTcmalloc gperftools; + + nativeBuildInputs = [ gnum4 scons ]; + + sconsFlags = [ target ]; + + enableParallelBuilding = true; + + # Without this we get "ValueError: invalid width 0 (must be > 0)" + COLUMNS = 80; + + postPatch = '' + patchShebangs util/ + ''; + + installPhase = '' + mkdir -p $out/bin/ + cp ${target} $out/bin/ + ''; +} -- cgit v1.2.3