1{ stdenv, lib, fetchurl, ocamlPackages, mpfr, ppl }:
2
3stdenv.mkDerivation rec {
4 pname = "jasmin-compiler";
5 version = "2023.06.1";
6
7 src = fetchurl {
8 url = "https://github.com/jasmin-lang/jasmin/releases/download/v${version}/jasmin-compiler-v${version}.tar.bz2";
9 hash = "sha256-3+eIR8wkBlcUQVDsugHo/rHNHbE2vpE9gutp55kRY4Y=";
10 };
11
12 sourceRoot = "jasmin-compiler-v${version}/compiler";
13
14 nativeBuildInputs = with ocamlPackages; [ ocaml findlib dune_3 menhir camlidl cmdliner ];
15
16 buildInputs = [
17 mpfr
18 ppl
19 ] ++ (with ocamlPackages; [
20 apron
21 yojson
22 ]);
23
24 propagatedBuildInputs = with ocamlPackages; [
25 batteries
26 menhirLib
27 zarith
28 ];
29
30 outputs = [ "bin" "lib" "out" ];
31
32 installPhase = ''
33 runHook preInstall
34 dune build @install
35 dune install --prefix=$bin --libdir=$out/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib
36 mkdir -p $lib/lib/jasmin/easycrypt
37 cp ../eclib/*.ec $lib/lib/jasmin/easycrypt
38 runHook postInstall
39 '';
40
41 meta = {
42 description = "A workbench for high-assurance and high-speed cryptography";
43 homepage = "https://github.com/jasmin-lang/jasmin/";
44 license = lib.licenses.mit;
45 maintainers = [ lib.maintainers.vbgl ];
46 mainProgram = "jasminc";
47 platforms = lib.platforms.all;
48 };
49}