9 useX11 ? stdenv.hostPlatform.isx86,
17 inherit (lib) optionals;
19 baseOcamlBranch = "4.14";
20 baseOcamlVersion = "${baseOcamlBranch}.1";
21 metaocamlPatch = "114";
24 stdenv.mkDerivation rec {
25 pname = "ber-metaocaml";
26 version = metaocamlPatch;
29 url = "https://caml.inria.fr/pub/distrib/ocaml-${baseOcamlBranch}/ocaml-${baseOcamlVersion}.tar.gz";
30 sha256 = "sha256-GDl53JwJyw9YCiMraFMaCbAlqmKLjY1ydEnxRv1vX+4=";
33 metaocaml = fetchurl {
34 url = "http://okmij.org/ftp/ML/ber-metaocaml-${metaocamlPatch}.tar.gz";
35 sha256 = "sha256-vvq3xI4jSAsrXcDk97TPbFDYgO9NcQeN/yBcUbcb/y0=";
42 x11lib = "${x11env}/lib";
43 x11inc = "${x11env}/include";
45 prefixKey = "-prefix ";
46 configureFlags = optionals useX11 [ "--enable-flambda" ];
49 buildInputs = [ ncurses ] ++ optionals useX11 x11deps;
53 cd ${pname}-${version}
66 ln -sv $out/lib/ocaml/caml $out/include/caml
67 cd ${pname}-${version}
77 cd ${pname}-${version}
85 nativeCompilers = true;
89 description = "Multi-Stage Programming extension for OCaml";
90 homepage = "https://okmij.org/ftp/ML/MetaOCaml.html";
91 license = with licenses; [
96 maintainers = with maintainers; [ thoughtpolice ];
98 branch = baseOcamlBranch;
99 platforms = with platforms; linux ++ darwin;
100 broken = stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isMips;
103 A simple extension of OCaml with the primitive type of code values, and
104 three basic multi-stage expression forms: Brackets, Escape, and Run.