summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorvbgl <vbgl@users.noreply.github.com>2015-05-26 23:52:32 +0200
committervbgl <vbgl@users.noreply.github.com>2015-05-26 23:52:32 +0200
commit2857d5d7a85659b289e3a49d807f89d2b5345715 (patch)
tree61d5c20ff90c73fe8c3784a313d5294c85fb2da7 /pkgs/build-support
parentf02284a36194619d4533b3349d4f67bc5cd54b19 (diff)
parentc651e7ff610b48a1f73a6db6da34e12174722bbd (diff)
downloadnixlib-2857d5d7a85659b289e3a49d807f89d2b5345715.tar
nixlib-2857d5d7a85659b289e3a49d807f89d2b5345715.tar.gz
nixlib-2857d5d7a85659b289e3a49d807f89d2b5345715.tar.bz2
nixlib-2857d5d7a85659b289e3a49d807f89d2b5345715.tar.lz
nixlib-2857d5d7a85659b289e3a49d807f89d2b5345715.tar.xz
nixlib-2857d5d7a85659b289e3a49d807f89d2b5345715.tar.zst
nixlib-2857d5d7a85659b289e3a49d807f89d2b5345715.zip
Merge pull request #7823 from ericbmerritt/ocaml-enhancements
Ocaml enhancements
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/ocaml/default.nix36
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 000000000000..87bfa6cea120
--- /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;
+})