summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/ocaml.scm42
1 files changed, 42 insertions, 0 deletions
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 6907b1a652..3750399caf 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -192,6 +192,48 @@ Git-friendly development workflow.")
     ;; The 'LICENSE' file waives some requirements compared to LGPLv3.
     (license lgpl3)))
 
+(define-public camlp4
+  (package
+    (name "camlp4")
+    (version "4.02.0+1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/ocaml/camlp4/archive/"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0055f4jiz82rgn581xhq3mr4qgq2qgdxqppmp8i2x1xnsim4h9pn"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("ocaml" ,ocaml)
+                     ("which" ,which)))
+    (inputs `(("ocaml" ,ocaml)))
+    (arguments
+     '(#:tests? #f                                ;no documented test target
+       #:phases (modify-phases %standard-phases
+                  (replace
+                   'configure
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     ;; This is a home-made 'configure' script.
+                     (let ((out (assoc-ref outputs "out")))
+                       (zero? (system* "./configure"
+                                       (string-append "--libdir=" out "/lib")
+                                       (string-append "--bindir=" out "/bin")
+                                       (string-append "--pkgdir=" out)))))))))
+    (home-page "https://github.com/ocaml/camlp4")
+    (synopsis "Write parsers in OCaml")
+    (description
+     "Camlp4 is a software system for writing extensible parsers for
+programming languages.  It provides a set of OCaml libraries that are used to
+define grammars as well as loadable syntax extensions of such grammars.
+Camlp4 stands for Caml Preprocessor and Pretty-Printer and one of its most
+important applications is the definition of domain-specific extensions of the
+syntax of OCaml.")
+
+    ;; This is LGPLv2 with an exception that allows packages statically-linked
+    ;; against the library to be released under any terms.
+    (license lgpl2.0)))
+
 (define-public camlp5
   (package
     (name "camlp5")