diff options
Diffstat (limited to 'pkgs/build-support/ocaml/default.nix')
-rw-r--r-- | pkgs/build-support/ocaml/default.nix | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/pkgs/build-support/ocaml/default.nix b/pkgs/build-support/ocaml/default.nix new file mode 100644 index 00000000000..87bfa6cea12 --- /dev/null +++ b/pkgs/build-support/ocaml/default.nix @@ -0,0 +1,36 @@ +{ stdenv, writeText, ocaml, findlib, camlp4 }: + +{ name, version, buildInputs ? [], + createFindlibDestdir ? true, + dontStrip ? true, + minimumSupportedOcamlVersion ? null, + hasSharedObjects ? false, + setupHook ? null, + meta ? {}, ... +}@args: +let + ocaml_version = (builtins.parseDrvName ocaml.name).version; + defaultMeta = { + platforms = ocaml.meta.platforms; + }; +in + assert minimumSupportedOcamlVersion != null -> + stdenv.lib.versionOlder minimumSupportedOcamlVersion ocaml_version; + +stdenv.mkDerivation (args // { + name = "ocaml-${name}-${version}"; + + buildInputs = [ ocaml findlib camlp4 ] ++ buildInputs; + + setupHook = if setupHook == null && hasSharedObjects + then writeText "setupHook.sh" '' + export CAML_LD_LIBRARY_PATH="''${CAML_LD_LIBRARY_PATH}''${CAML_LD_LIBRARY_PATH:+:}''$1/lib/ocaml/${ocaml_version}/site-lib/${name}/" + '' + else setupHook; + + inherit ocaml_version; + inherit createFindlibDestdir; + inherit dontStrip; + + meta = defaultMeta // meta; +}) |