about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/ocaml/js_of_ocaml/default.nix
blob: 7f6426c9610db02f0a65ff2f382015b64a5a9b9f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{ stdenv, fetchurl, ocaml, findlib, lwt, menhir, ocsigen_deriving, ppx_deriving, camlp4, ocamlbuild
, cmdliner, tyxml, reactivedata, cppo, which, base64, uchar, yojson
}:

let version = if stdenv.lib.versionAtLeast ocaml.version "4.02"
  then "2.8.4" else "2.7";
in

stdenv.mkDerivation {
  pname = "js_of_ocaml";
  inherit version;
  src = fetchurl {
    url = "https://github.com/ocsigen/js_of_ocaml/archive/${version}.tar.gz";
    sha256 = {
      "2.7" = "1dali1akyd4zmkwav0d957ynxq2jj6cc94r4xiaql7ca89ajz4jj";
      "2.8.4" = "098ph50s9kqw6rc3qjn39zv9b5swdf4qr44afwqfkkjgjs5d7vbl";
    }.${version};
  };

  buildInputs = [ ocaml findlib menhir ocsigen_deriving ocamlbuild
                 cmdliner reactivedata cppo which base64 ]
  ++ stdenv.lib.optionals (stdenv.lib.versionAtLeast ocaml.version "4.02") [ yojson tyxml ];
  propagatedBuildInputs = [ lwt camlp4 ppx_deriving ]
  ++ stdenv.lib.optional (version == "2.8.4") uchar;

  patches = [ ./Makefile.conf.diff ];

  createFindlibDestdir = true;

  meta = with stdenv.lib; {
    homepage = "http://ocsigen.org/js_of_ocaml/";
    description = "Compiler of OCaml bytecode to Javascript. It makes it possible to run Ocaml programs in a Web browser";
    license = licenses.lgpl2;
    platforms = ocaml.meta.platforms or [];
    maintainers = [
      maintainers.gal_bolle
    ];
    broken = versionAtLeast ocaml.version "4.05";
  };
}