Subject: [PATCH 076/232] gnu: Add java-antlr4-runtime-cpp.

From: Maxim Cournoyer <[email-masked]>
Date: Sun, 24 Apr 2022 23:56:42 -0400

* gnu/packages/java.scm (java-antlr4-runtime-cpp): New variable.
---
 gnu/packages/java.scm | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 43422f383f..539a6e6f6a 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2019, 2020, 2021 Björn Höfling <[email-masked]>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <[email-masked]>
 ;;; Copyright © 2020 Raghav Gururajan <[email-masked]>
-;;; Copyright © 2020 Maxim Cournoyer <[email-masked]>
+;;; Copyright © 2020, 2022 Maxim Cournoyer <[email-masked]>
 ;;; Copyright © 2021 Vincent Legoll <[email-masked]>
 ;;; Copyright © 2021 Mike Gerwitz <[email-masked]>
 ;;; Copyright © 2021 Pierre Langlois <[email-masked]>
@@ -45,6 +45,7 @@ (define-module (gnu packages java)
   #:use-module (guix utils)
   #:use-module (guix gexp)
   #:use-module (guix build-system ant)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system maven)
   #:use-module (guix build-system trivial)
@@ -8619,6 +8620,38 @@ (define-public java-antlr4-runtime
 sources by ANTLR.")
     (license license:bsd-3)))
 
+(define-public java-antlr4-runtime-cpp
+  (package
+    (inherit java-antlr4-runtime)
+    (name "java-antlr4-runtime-cpp")
+    (outputs '("out" "static"))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      ;; TODO: try to run the tests under
+      ;; runtime-testsuite/test/org/antlr/v4/test/runtime/cpp with antlr4.
+      #:tests? #f                       ;no CMake test target
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'chdir
+            (lambda _
+              (chdir "runtime/Cpp")))
+          (add-after 'install 'move-static-library
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((static (assoc-ref outputs "static"))
+                    (libantlr4-runtime.a (search-input-file
+                                          outputs "lib/libantlr4-runtime.a")))
+                (mkdir-p (string-append static "/lib"))
+                (rename-file
+                 libantlr4-runtime.a
+                 (string-append static "/lib/"
+                                (basename libantlr4-runtime.a)))))))))
+    (native-inputs (list pkg-config))
+    (inputs (list `(,util-linux "lib"))) ;libuuid
+    (synopsis "ANTL C++ runtime library")
+    (description "This package contains the C++ runtime library used with C++
+generated sources by ANTLR.")))
+
 (define-public antlr4
   (package
     (inherit java-antlr4-runtime)
-- 
2.34.0