diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 086f3b048a..0948377d08 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2020 divoplade ;;; Copyright © 2020 pukkamustard ;;; Copyright © 2021 aecepoglu +;;; Copyright © 2021 Sharlatan Hellseher ;;; ;;; This file is part of GNU Guix. ;;; @@ -466,6 +467,71 @@ depend: $(STDLIB_MLIS) $(STDLIB_DEPS)")) for building OCaml library and programs.") (license license:lgpl2.1+))) +(define-public camlidl + (package + (name "camlidl") + (version "1.09") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xavierleroy/camlidl") + (commit "camlidl109"))) + (sha256 + (base32 "0zrkaq7fk23b2b9vg6jwdjx7l0hdqp4synbbrw1zcg8gjf6n3c80")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;; No test suite + #:make-flags + (list + (string-append + "BINDIR=" (assoc-ref %outputs "out") "/bin") + (string-append + "OCAMLLIB=" (assoc-ref %outputs "out") "/lib/ocaml/site-lib/camlidl")) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (copy-file "config/Makefile.unix" "config/Makefile") + ;; Note: do not pass '-jN' as this appears to not be + ;; parallel-safe (race condition related to libcamlidl.a). + (invoke "make" "all") + #t)) + (add-before 'install 'create-target-directories + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (string-append (assoc-ref outputs "out")))) + (mkdir-p + (string-append out "/bin")) + (mkdir-p + (string-append out "/lib/ocaml/site-lib/camlidl/stublibs")) + (mkdir-p + (string-append out "/lib/ocaml/site-lib/camlidl/caml"))) + #t)) + (add-after 'install 'install-meta + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (with-output-to-file + (string-append out "/lib/ocaml/site-lib/camlidl/META") + (lambda _ + (display + (string-append + "description = \"Stub code generator for OCaml/C interface\" +version = \"" ,version "\" +directory = \"^\" +archive(byte) = \"com.cma\" +archive(native) = \"com.cmxa\""))))) + #t))))) + (native-inputs + `(("ocaml" ,ocaml))) + (home-page "https://github.com/xavierleroy/camlidl") + (synopsis "Stub code generator for OCaml/C interface") + (description + "Camlidl is a stub code generator for Objective Caml. It generates stub +code for interfacing Caml with C from an IDL description of the C functions.") + (license license:lgpl2.1))) + (define-public ocaml-extlib (package (name "ocaml-extlib")