Subject: [PATCH] gnu: Add blitz.

From: Ivan Gankevich <[email-masked]>
Date: Wed, 14 Jul 2021 14:57:14 +0300

* gnu/packages/maths.scm (blitz): New variable.
---
 gnu/packages/maths.scm | 54 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index b4cf0b5409..eb92fb083a 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -6440,3 +6440,57 @@ to source-code analysis of C software.  The Frama-C analyzers assist you in
 various source-code-related activities, from the navigation through unfamiliar
 projects up to the certification of critical software.")
     (license license:lgpl2.1+)))
+
+(define-public blitz
+  (package
+    (name "blitz")
+    (version "1.0.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/blitzpp/blitz")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256 (base32 "0c88gc72j3zggyk4yrrip6i0v7xkx97l140vpy3xhxs2i7xy1461"))))
+    (build-system cmake-build-system)
+    (arguments
+      `(#:configure-flags
+        '("-DBUILD_DOC=ON"
+          "-DDISABLE_REFMAN_PDF=ON" ;; refman.pdf requires array-2016-10-06.sty
+          "-DBUILD_TESTING=ON")
+        ;; default "check" target also includes examples and benchmarks
+        #:test-target "check-testsuite"
+        #:phases
+        (modify-phases %standard-phases
+          (add-after 'unpack 'patch-locations
+            (lambda _
+              ;; replace "texinfo.tex" location
+              (substitute* "doc/CMakeLists.txt"
+                (("/usr/share/texmf/tex/texinfo/")
+                 (format #f "~a/share/texmf-dist/tex/texinfo/"
+                         (assoc-ref %build-inputs "texlive-tex-texinfo"))))
+              #t))
+          (add-after 'build 'build-doc
+            (lambda _
+              (define jobs (format #f "-j~a" (parallel-job-count)))
+              (invoke "make" jobs "blitz-doc")
+              #t))
+          (add-after 'check 'check-examples
+            (lambda _
+              (define jobs (format #f "-j~a" (parallel-job-count)))
+              (invoke "make" jobs "check-examples")
+              #t)))))
+    (native-inputs
+      `(("python" ,python)
+        ("texinfo" ,texinfo)
+        ("texlive-tex-texinfo" ,texlive-tex-texinfo)
+        ("texlive" ,(texlive-union (list texlive-epsf))) ;; for texi2dvi
+        ("texi2html" ,texi2html)
+        ("doxygen" ,doxygen)
+        ("graphviz" ,graphviz)))
+    (synopsis "C++ template class library for multidimensional arrays")
+    (description
+      "High-performance multidimensional array containers for scientific computing.")
+    (home-page "https://github.com/blitzpp/blitz")
+    (license (list license:artistic2.0 license:bsd-3 license:lgpl3+))))
-- 
2.32.0