diff options
Diffstat (limited to 'pkgs/gem5.nix')
| -rw-r--r-- | pkgs/gem5.nix | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/pkgs/gem5.nix b/pkgs/gem5.nix new file mode 100644 index 0000000..9795c0e --- /dev/null +++ b/pkgs/gem5.nix @@ -0,0 +1,66 @@ +{ + boost, + lib, + fetchFromGitHub, + gnum4, + gperftools, + hdf5-cpp, + libpng, + protobuf, + python3, + 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/ + ''; + } |
