Subject: [bug#30096] [PATCH 3/6] gnu: Add ocaml-ctypes.

From: Peter Kreye <[email-masked]>
Date: Thu, 18 Jan 2018 23:52:53 -0600

Julien Lepiller writes:

>> +   (inputs
>> +    `(("pkg-config" ,pkg-config)
> That should be a native-inputs I think

I agree.

--
>From 7215cb21ae3c4117d1b581b19b3b310339b32689 Mon Sep 17 00:00:00 2001
From: Peter Kreye <[email-masked]>
Date: Thu, 18 Jan 2018 23:41:30 -0600
Subject: [PATCH] gnu: Add ocaml-ctypes.
To: [email-masked]

* gnu/packages/ocaml.scm (ocaml-ctypes): New variable.
---
 gnu/packages/ocaml.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index ca731001f..23fa260c8 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -42,6 +42,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages multiprecision)
@@ -3770,6 +3771,45 @@ and 64-bit signed and unsigned integer types, together with aliases such as
 long and size_t whose sizes depend on the host platform.")
     (license license:expat)))
 
+(define-public ocaml-ctypes
+  (package
+   (name "ocaml-ctypes")
+   (version "0.13.1")
+   (home-page "https://github.com/ocamllabs/ocaml-ctypes")
+   (source (origin
+             (method url-fetch)
+             (uri (string-append home-page "/archive/" version ".tar.gz"))
+             (file-name (string-append name "-" version ".tar.gz"))
+             (sha256
+              (base32
+               "17w0pr5k0zjcjns4y9n36rjpfl35zhvp3h8ggqs9lz12qhshdk2m"))))
+   (build-system ocaml-build-system)
+   (arguments
+    `(#:findlib ,ocaml-findlib-1.7.3
+      #:make-flags
+       (list (string-append "INSTALL_HEADERS = $(wildcard $($(PROJECT).dir)/*.h)"))
+      #:phases
+      (modify-phases %standard-phases
+        (delete 'configure))))
+   (native-inputs
+    `(("pkg-config" ,pkg-config)))
+   (inputs
+    `(("libffi" ,libffi)
+      ("ounit" ,ocaml-ounit)
+      ("integers" ,ocaml-integers)
+      ("lwt" ,ocaml-lwt)
+      ("topkg" ,ocaml-topkg)
+      ("opam", opam)))
+   (synopsis "Library for binding to C libraries using pure OCaml")
+   (description "Ctypes is a library for binding to C libraries using pure
+OCaml.  The primary aim is to make writing C extensions as straightforward as
+possible.  The core of ctypes is a set of combinators for describing the
+structure of C types -- numeric types, arrays, pointers, structs, unions and
+functions.  You can use these combinators to describe the types of the
+functions that you want to call, then bind directly to those functions -- all
+without writing or generating any C!")
+   (license license:expat)))
+
 (define-public coq-flocq
   (package
     (name "coq-flocq")
-- 
2.14.2