Subject: [PATCH 05/11] gnu: Add optionparser.

From: David Elsing <[email-masked]>
Date: Mon, 3 Oct 2022 00:19:50 +0000

* gnu/packages/cpp.scm (optionparser): New variable.
---
 gnu/packages/cpp.scm | 50 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 4819f36052..b30205109e 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2058,3 +2058,53 @@ (define-public tinydir
     (description "tinydir is a header-only C library to portably read files
 and directories.")
     (license license:bsd-2)))
+
+(define-public optionparser
+  (package
+    (name "optionparser")
+    (version "1.7")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "mirror://sourceforge/optionparser/optionparser-"
+                              version ".tar.gz"))
+              (sha256
+               (base32
+                "04gfxrdzwacaynb8scsz6rr7nh64n6yk6w9dh2qdhrxw4caqr0dk"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (add-before 'build 'chdir
+            (lambda _ (chdir "src") #t))
+          (replace 'build
+            (lambda _
+              (invoke "make" "-j" (number->string (parallel-job-count))
+                      "example_arg" "testparse" "testprintusage" "testodr"
+                      "example")
+              #t))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (if tests?
+                  (begin
+                    (invoke "./example_arg")
+                    (invoke "./testparse")
+                    (invoke "./testprintusage")
+                    (invoke "./testodr")
+                    (invoke "./example"))
+                  (format #t "test suite not run~%"))))
+          (replace 'install
+            (lambda _
+              (install-file "optionparser.h" (string-append #$output "/include"))
+              #t))
+          (add-after 'install 'chdir-back
+            (lambda _ (chdir "..") #t)))))
+    (home-page "https://optionparser.sourceforge.net/")
+    (synopsis "Header-only C++ library to parse command line options")
+    (description "The Lean Mean C++ Option Parser handles the program's
+command line arguments (argc, argv).  It supports the short and long option
+formats of getopt(), getopt_long() and getopt_long_only() but has a more
+convenient interface.")
+    (license license:expat)))
-- 
2.37.0