summary refs log tree commit diff
path: root/pkgs/build-support/ocaml
diff options
context:
space:
mode:
authorEric Merritt <eric@afiniate.com>2015-05-21 11:03:57 -0500
committerEric Merritt <eric@afiniate.com>2015-05-22 10:12:21 -0700
commitd814c50505c0583bc2b80e6af2f62fe02cb24971 (patch)
tree8088ba6aae0d516686a0bd843d264c31dd5d0d8e /pkgs/build-support/ocaml
parentae0e3c8974f8ab0710ad81dad005d3127ac91eca (diff)
downloadnixpkgs-d814c50505c0583bc2b80e6af2f62fe02cb24971.tar
nixpkgs-d814c50505c0583bc2b80e6af2f62fe02cb24971.tar.gz
nixpkgs-d814c50505c0583bc2b80e6af2f62fe02cb24971.tar.bz2
nixpkgs-d814c50505c0583bc2b80e6af2f62fe02cb24971.tar.lz
nixpkgs-d814c50505c0583bc2b80e6af2f62fe02cb24971.tar.xz
nixpkgs-d814c50505c0583bc2b80e6af2f62fe02cb24971.tar.zst
nixpkgs-d814c50505c0583bc2b80e6af2f62fe02cb24971.zip
add an ocaml specific builder to the system
Diffstat (limited to 'pkgs/build-support/ocaml')
-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 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;
+})