aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/ocaml.scm
diff options
context:
space:
mode:
authorJulien Lepiller <julien@lepiller.eu>2021-02-16 16:38:15 +0100
committerJulien Lepiller <julien@lepiller.eu>2021-02-16 16:52:55 +0100
commit8f710cc598fb675d267f49a82cffc197f03ad52c (patch)
tree50b6c0b237d0d13606662d4f8348bf0ac3c790b2 /gnu/packages/ocaml.scm
parent4390934f0b4a0d9208423e3b261e0f09b40eeb39 (diff)
downloadguix-8f710cc598fb675d267f49a82cffc197f03ad52c.tar.gz
guix-8f710cc598fb675d267f49a82cffc197f03ad52c.zip
gnu: Add ocaml-llvm.
* gnu/packages/ocaml.scm (make-ocaml-llvm, ocaml-llvm, ocaml-llvm-9) (ocaml-llvm-10, ocaml-llvm-11): New variables.
Diffstat (limited to 'gnu/packages/ocaml.scm')
-rw-r--r--gnu/packages/ocaml.scm41
1 files changed, 41 insertions, 0 deletions
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 03895d0a53..dec1f8405e 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -6197,3 +6197,44 @@ provides support to program with time varying values: declarative events and
signals. React doesn't define any primitive event or signal, it lets the
client chooses the concrete timeline.")
(license license:lgpl2.1+)))
+
+(define (make-ocaml-llvm llvm)
+ (package
+ (inherit llvm)
+ (name "ocaml-llvm")
+ (outputs '("out"))
+ (arguments
+ `(#:configure-flags
+ (list
+ (string-append "-DLLVM_OCAML_EXTERNAL_LLVM_LIBDIR="
+ (assoc-ref %build-inputs "llvm") "/lib")
+ "-DBUILD_SHARED_LIBS=TRUE"
+ "-DLLVM_OCAML_OUT_OF_TREE=TRUE"
+ (string-append "-DLLVM_OCAML_INSTALL_PATH="
+ (assoc-ref %outputs "out") "/lib/ocaml/site-lib"))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ (invoke "make" "ocaml_all")))
+ (replace 'install
+ (lambda _
+ (invoke "cmake" "-P" "bindings/ocaml/cmake_install.cmake"))))))
+ (inputs
+ `(("llvm" ,llvm)))
+ (native-inputs
+ `(("ocaml" ,ocaml)
+ ("ocaml-findlib" ,ocaml-findlib)
+ ("ocaml-ounit" ,ocaml-ounit)
+ ("python" ,python)))
+ (propagated-inputs
+ `(("ocaml-integers" ,ocaml-integers)
+ ("ocaml-ctypes" ,ocaml-ctypes)))
+ (synopsis "OCaml bindings to LLVM")
+ (description "This package contains the OCaml bindings distributed with
+LLVM.")))
+
+(define-public ocaml-llvm (make-ocaml-llvm llvm))
+(define-public ocaml-llvm-9 (make-ocaml-llvm llvm-9))
+(define-public ocaml-llvm-10 (make-ocaml-llvm llvm-10))
+(define-public ocaml-llvm-11 (make-ocaml-llvm llvm-11))