---------- Forwarded message ----------
From: Mario Ceresa
Date: Tue, Aug 23, 2011 at 8:47 AM
Subject: Re: CharLS / DCMTK
To: Mathieu Malaterre


When I removed the bundled libcharl for dcmtk in fedora I changed 3 things:

1) Do not configure bundled libcharls project (patch
dcmtk-3.6.0-0003-Removed-bundled-libcharl-reference-in-dcmjpls.patch)

2) Change 3rdparty.cmake to include system libcharls and create a
Findlibcharls.cmake (patch dcmtk-3.6.0-0004-Use-system-charls.patch)

3) Fixed some inclusions which changed between the included version of
dcmtk and the one present in fedora (patch
dcmtk-3.6.0-0005-Fixed-includes-for-CharLS-1.0.patch)

I attach you all the 3 files and the spec file. If you spot some
errors, please notify me, so I can correct the patches in Fedora as
well :)

Hope this helps

Best,

Mario
From 066d61eaecdf0731be99782649340ed141b1d1be Mon Sep 17 00:00:00 2001
From: Mario Ceresa <mrcer...@gmail.com>
Date: Sun, 20 Mar 2011 13:11:54 +0100
Subject: [PATCH 3/6] Removed bundled libcharl reference in dcmjpls

---
 dcmjpls/CMakeLists.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/dcmjpls/CMakeLists.txt b/dcmjpls/CMakeLists.txt
index d89eedf..a6faf10 100644
--- a/dcmjpls/CMakeLists.txt
+++ b/dcmjpls/CMakeLists.txt
@@ -2,4 +2,4 @@
 PROJECT(dcmjpls)
 
 # recurse into subdirectories
-SUBDIRS(libsrc libcharls apps include/dcmtk/dcmjpls)
+SUBDIRS(libsrc apps include/dcmtk/dcmjpls)
-- 
1.7.4

From c20efddd5eee01bb5db0aeaac8fc0b64abf6d6cf Mon Sep 17 00:00:00 2001
From: Mario Ceresa <mrcer...@gmail.com>
Date: Sun, 20 Mar 2011 14:27:14 +0100
Subject: [PATCH 4/6] Use system charls

---
 CMake/3rdparty.cmake          |   17 +++++++++++++++++
 CMake/FindCharLS.cmake        |   34 ++++++++++++++++++++++++++++++++++
 CMakeLists.txt                |    1 +
 dcmjpls/apps/CMakeLists.txt   |    2 +-
 dcmjpls/libsrc/CMakeLists.txt |    2 +-
 5 files changed, 54 insertions(+), 2 deletions(-)
 create mode 100644 CMake/FindCharLS.cmake

diff --git a/CMake/3rdparty.cmake b/CMake/3rdparty.cmake
index 74ce78f..36956ce 100755
--- a/CMake/3rdparty.cmake
+++ b/CMake/3rdparty.cmake
@@ -197,6 +197,23 @@ ELSE(WIN32)
       SET(WITH_ZLIB 1)
     ENDIF(NOT ZLIB_LIBS)
   ENDIF(DCMTK_WITH_ZLIB)
+  
+  # Find charls
+  
+  SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake)
+  
+  IF(DCMTK_WITH_CHARLS)
+    FIND_PACKAGE(CharLS)
+    INCLUDE_DIRECTORIES(${CHARLS_INCLUDE_DIRS})
+    SET(CHARLS_LIBS ${CHARLS_LIBRARIES})
+    IF (NOT CHARLS_LIBS)
+      MESSAGE(STATUS "Warning: CharLS not found. Cannot build!")
+    ELSE(NOT CHARLS_LIBS)
+      MESSAGE(STATUS "Info: DCMTK CHARLS support will be enabled")
+      SET(WITH_CHARLS 1)
+    ENDIF(NOT CHARLS_LIBS)
+  ENDIF(DCMTK_WITH_CHARLS)
+  
 
 ENDIF(WIN32)
 
diff --git a/CMake/FindCharLS.cmake b/CMake/FindCharLS.cmake
new file mode 100644
index 0000000..eaa45b7
--- /dev/null
+++ b/CMake/FindCharLS.cmake
@@ -0,0 +1,34 @@
+FIND_PATH(CHARLS_INCLUDE_DIR CharLS/interface.h
+/usr/local/include
+/usr/include
+)
+
+FIND_LIBRARY(CHARLS_LIBRARY
+  NAMES CharLS
+  PATHS /usr/lib /usr/local/lib /usr/lib64 /usr/local/lib64
+  )
+
+
+IF (CHARLS_LIBRARY AND CHARLS_INCLUDE_DIR)
+    SET(CHARLS_LIBRARIES ${CHARLS_LIBRARY})
+    SET(CHARLS_INCLUDE_DIRS ${CHARLS_INCLUDE_DIR})
+    SET(CHARLS_FOUND "YES")
+ELSE (CHARLS_LIBRARY AND CHARLS_INCLUDE_DIR)
+  SET(CHARLS_FOUND "NO")
+ENDIF (CHARLS_LIBRARY AND CHARLS_INCLUDE_DIR)
+
+
+IF (CHARLS_FOUND)
+   IF (NOT CHARLS_FIND_QUIETLY)
+      MESSAGE(STATUS "Found CHARLS: ${CHARLS_LIBRARIES}")
+   ENDIF (NOT CHARLS_FIND_QUIETLY)
+ELSE (CHARLS_FOUND)
+   IF (CHARLS_FIND_REQUIRED)
+      MESSAGE(FATAL_ERROR "Could not find CHARLS library")
+   ENDIF (CHARLS_FIND_REQUIRED)
+ENDIF (CHARLS_FOUND)
+
+MARK_AS_ADVANCED(
+  CHARLS_LIBRARIES
+  CHARLS_INCLUDE_DIR
+  )
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 86b7601..fa5d9ad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,6 +36,7 @@ SET(DCMTK_PACKAGE_VERSION_NUMBER ${DCMTK_MAJOR_VERSION}${DCMTK_MINOR_VERSION}${D
 
 
 # DCMTK build options
+OPTION(DCMTK_WITH_CHARLS "Configure DCMTK with support for CHARLS" ON)
 OPTION(DCMTK_WITH_TIFF "Configure DCMTK with support for TIFF" ON)
 OPTION(DCMTK_WITH_PNG "Configure DCMTK with support for PNG" ON)
 OPTION(DCMTK_WITH_XML "Configure DCMTK with support for XML" OFF)
diff --git a/dcmjpls/apps/CMakeLists.txt b/dcmjpls/apps/CMakeLists.txt
index d993bc2..45abcb9 100644
--- a/dcmjpls/apps/CMakeLists.txt
+++ b/dcmjpls/apps/CMakeLists.txt
@@ -16,6 +16,6 @@ ENDFOREACH(PROGRAM)
 
 # make sure executables are linked to the corresponding libraries
 FOREACH(PROGRAM dcmcjpls dcmdjpls dcml2pnm)
-  TARGET_LINK_LIBRARIES(${PROGRAM} dcmjpls charls dcmimage dcmimgle dcmdata oflog ofstd ofstd ${ZLIB_LIBS} ${THREAD_LIBS} ${WIN32_STD_LIBRARIES})
+  TARGET_LINK_LIBRARIES(${PROGRAM} dcmjpls ${CHARLS_LIBS} dcmimage dcmimgle dcmdata oflog ofstd ofstd ${ZLIB_LIBS} ${THREAD_LIBS} ${WIN32_STD_LIBRARIES})
 ENDFOREACH(PROGRAM)
 TARGET_LINK_LIBRARIES(dcml2pnm ${LIBTIFF_LIBS} ${LIBPNG_LIBS})
diff --git a/dcmjpls/libsrc/CMakeLists.txt b/dcmjpls/libsrc/CMakeLists.txt
index 63a2766..9499dd8 100644
--- a/dcmjpls/libsrc/CMakeLists.txt
+++ b/dcmjpls/libsrc/CMakeLists.txt
@@ -1,5 +1,5 @@
 # declare additional include directories
-INCLUDE_DIRECTORIES(${dcmjpls_SOURCE_DIR}/include ${ofstd_SOURCE_DIR}/include ${oflog_SOURCE_DIR}/include ${dcmdata_SOURCE_DIR}/include ${dcmimgle_SOURCE_DIR}/include ${dcmimage_SOURCE_DIR}/include ${dcmjpls_SOURCE_DIR}/libcharls ${ZLIB_INCDIR})
+INCLUDE_DIRECTORIES(${dcmjpls_SOURCE_DIR}/include ${ofstd_SOURCE_DIR}/include ${oflog_SOURCE_DIR}/include ${dcmdata_SOURCE_DIR}/include ${dcmimgle_SOURCE_DIR}/include ${dcmimage_SOURCE_DIR}/include ${CHARLS_INCLUDE_DIRS} ${ZLIB_INCDIR})
 
 # create library from source files
 ADD_LIBRARY(dcmjpls djcparam djdecode djencode djrparam djcodecd djutils djcodece)
-- 
1.7.4

From 6d6a52c1c049c0fe8440d8b03d5cb852a47c0cd5 Mon Sep 17 00:00:00 2001
From: Mario Ceresa <mrcer...@gmail.com>
Date: Sun, 20 Mar 2011 14:40:48 +0100
Subject: [PATCH 5/6] Fixed includes for CharLS 1.0

---
 dcmjpls/libsrc/djcodecd.cc |    2 +-
 dcmjpls/libsrc/djcodece.cc |    2 +-
 dcmjpls/libsrc/djerror.h   |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc
index 8a11515..8da8d7a 100644
--- a/dcmjpls/libsrc/djcodecd.cc
+++ b/dcmjpls/libsrc/djcodecd.cc
@@ -44,7 +44,7 @@
 #include "djerror.h"                 /* for private class DJLSError */
 
 // JPEG-LS library (CharLS) includes
-#include "intrface.h"
+#include "CharLS/interface.h"
 
 E_TransferSyntax DJLSLosslessDecoder::supportedTransferSyntax() const
 {
diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc
index 9d6e1d8..8148b31 100644
--- a/dcmjpls/libsrc/djcodece.cc
+++ b/dcmjpls/libsrc/djcodece.cc
@@ -62,7 +62,7 @@
 #include "dcmtk/dcmimgle/dcmimage.h"  /* for class DicomImage */
 
 // JPEG-LS library (CharLS) includes
-#include "intrface.h"
+#include "CharLS/interface.h"
 
 BEGIN_EXTERN_C
 #ifdef HAVE_FCNTL_H
diff --git a/dcmjpls/libsrc/djerror.h b/dcmjpls/libsrc/djerror.h
index 68ebae1..d3cd2ad 100644
--- a/dcmjpls/libsrc/djerror.h
+++ b/dcmjpls/libsrc/djerror.h
@@ -31,7 +31,7 @@
 
 #include "dcmtk/config/osconfig.h"
 #include "dcmtk/dcmjpls/djlsutil.h" /* For the OFCondition codes */
-#include "intrface.h" /* CharLS include */
+#include "CharLS/interface.h" /* CharLS include */
 
 /** Helper class for converting between dcmjpls and CharLS error codes
  */
-- 
1.7.4

Attachment: dcmtk.spec
Description: Binary data

Reply via email to