From e438b7b5f58ba3be986e91d0f63aaa53b30b5721 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 20 Apr 2021 17:35:01 +0000 Subject: [PATCH] pkgs: add havm This is a dependency for Tiger Compiler [1]. [1]: https://assignments.lrde.epita.fr/ --- pkgs/default.nix | 2 ++ pkgs/havm/default.nix | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 pkgs/havm/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 9e6e1c9..5faf4d5 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,7 @@ { pkgs }: { + havm = pkgs.callPackage ./havm { }; + lohr = pkgs.callPackage ./lohr { }; nolimips = pkgs.callPackage ./nolimips { }; diff --git a/pkgs/havm/default.nix b/pkgs/havm/default.nix new file mode 100644 index 0000000..20817fc --- /dev/null +++ b/pkgs/havm/default.nix @@ -0,0 +1,30 @@ +{ fetchurl, ghc, lib, stdenv, which }: +stdenv.mkDerivation rec { + pname = "havm"; + version = "0.28"; + + src = fetchurl { + url = "https://www.lrde.epita.fr/~tiger/download/${pname}-${version}.tar.gz"; + sha256 = "sha256-FDi4FZ8rjGqRkFlROtcJsv+mks7MmIXQGV4bZrwkQrA="; + }; + + buildInputs = [ + ghc + which # Used by tests + ]; + + doCheck = true; + + meta = with lib; { + description = "A simple virtual machine to execute Andrew Appel's HIR/LIR"; + longDescription = '' + HAVM is a virtual machine designed to execute simple register based high + level intermediate code. It is based on the intermediate representations + ("canonicalized" or not) defined by Andrew Appel in his "Modern Compiler + Implementation". + ''; + homepage = "https://www.lrde.epita.fr/wiki/Havm"; + license = licenses.gpl2Plus; + platforms = platforms.all; + }; +}