Subject: [bug#60640] Gnu: Add gdcm

From: Tor-björn Claesson <[email-masked]>
Date: Sat, 07 Jan 2023 21:40:42 +0200

gnu/packages/image-processing.scm | 72 +++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 70c820e76b..271593b5f9 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -99,6 +99,7 @@ (define-module (gnu packages image-processing)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
@@ -1776,3 +1777,74 @@ (define-public charls
  to have them encoded to JPEG-LS, or JPEG-LS streams, which CharLS will decode
 to images.")
     (license license:bsd-3)))
+
+(define-public gdcm
+  (package
+    (name "gdcm")
+    (version "3.0.20")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/malaterre/GDCM/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1w78cmm9q7aavs7svdkl4dgilcqk4yazci9m6x7icrssb7cj991i"))))
+    (build-system cmake-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     (list #:tests? #f
+           #:phases #~(modify-phases %standard-phases
+                        (add-before 'configure 'set-LDFLAGS
+                          (lambda* (#:key inputs outputs #:allow-other-keys)
+                            (setenv "LDFLAGS"
+                                    (string-append "-Wl,-rpath="
+                                                   #$output "/lib"))))
+                        (add-before 'build 'patch-gdcm-charls.h
+                          (lambda _
+                            (substitute* "../source/Utilities/gdcm_charls.h"
+                              (("# include <CharLS/charls.h>")
+                               "# include <charls/charls.h>")) #t)))
+           #:configure-flags #~(list "-DCMAKE_SKIP_RPATH:BOOL=YES"
+                                     "-DCMAKE_BUILD_TYPE:STRING=Release"
+                                     "-DCMAKE_C_FLAGS=-fvisibility=hidden"
+                                     "-DCMAKE_CXX_FLAGS=-fvisibility=hidden"
+                                     "-DGDCM_BUILD_SHARED_LIBS:BOOL=ON"
+                                     "-DGDCM_DOCUMENTATION:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_EXPAT:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_ZLIB:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_CHARLS:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_POPPLER:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_LIBXML2:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_JSON:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_UUID:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_OPENJPEG:BOOL=ON"
+                                     "-DGDCM_USE_SYSTEM_OPENSSL:BOOL=ON"
+                                     "-DGDCM_PDF_DOCUMENTATION:BOOL=OFF"
+                                     "-DGCM_BUILD_TESTING:BOOL=OFF"
+                                     "-DGDCM_BUILD_APPLICATIONS:BOOL=OFF"
+                                     "-DGDCM_USE_SYSTEM_PAPYRUS3:BOOL=OFF"
+                                     "-DGDCM_USE_SYSTEM_SOCKETXX:BOOL=OFF"
+                                     "-DGDCM_USE_SYSTEM_LJPEG:BOOL=OFF")))
+    (inputs (list openssl
+                  expat
+                  charls
+                  poppler
+                  libxml2
+                  json-c
+                  openjpeg
+                  `(,util-linux "lib")
+                  zlib))
+    (native-inputs (list git pkg-config doxygen graphviz))
+    (home-page "https://gdcm.sourceforge.net")
+    (synopsis
+     "C++ library dedicated to reading/parsing and writing DICOM medical files")
+    (description
+     "Grassroots DICOM (GDCM) is an implementation of the DICOM standard
+designed to be open source so that researchers may access clinical data
+directly.  GDCM includes a file format definition and a network communications
+protocol, both of which should be extended to provide a full set of tools for
+a researcher or small medical imaging vendor to interface with an existing
+medical database.")
+    (license license:bsd-3)))
-- 
2.38.1