diff options
| author | Alejandro Soto <alejandro@34project.org> | 2023-06-13 00:40:16 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2023-06-13 00:40:16 -0600 |
| commit | 04b6e1fa94ebfa2b788875515dcf66de98d0fb3f (patch) | |
| tree | 64275cd8a9f54eebb68a411c642dc0c3c8e68d5b /pkgs/gem5.nix | |
| parent | 31a416967a3a9765023d3bcdab14c72f4e79d32d (diff) | |
pkgs/gem5: initial commit
Diffstat (limited to '')
| -rw-r--r-- | pkgs/gem5.nix | 64 |
1 files changed, 64 insertions, 0 deletions
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/ + ''; +} |
