diff --git a/CMakeExternals/DCMTK.cmake b/CMakeExternals/DCMTK.cmake index 324bb7f98e..2cb0358e7c 100644 --- a/CMakeExternals/DCMTK.cmake +++ b/CMakeExternals/DCMTK.cmake @@ -1,45 +1,46 @@ #----------------------------------------------------------------------------- # DCMTK #----------------------------------------------------------------------------- IF(MITK_USE_DCMTK) # Sanity checks IF(DEFINED DCMTK_DIR AND NOT EXISTS ${DCMTK_DIR}) MESSAGE(FATAL_ERROR "DCMTK_DIR variable is defined but corresponds to non-existing directory") ENDIF() SET(proj DCMTK) SET(proj_DEPENDENCIES ) SET(DCMTK_DEPENDS ${proj}) IF(NOT DEFINED DCMTK_DIR) IF(UNIX) SET(DCMTK_CXX_FLAGS "-fPIC") SET(DCMTK_C_FLAGS "-fPIC") ENDIF(UNIX) IF(DCMTK_DICOM_ROOT_ID) SET(DCMTK_CXX_FLAGS "${DCMTK_CXX_FLAGS} -DSITE_UID_ROOT=\\\"${DCMTK_DICOM_ROOT_ID}\\\"") SET(DCMTK_C_FLAGS "${DCMTK_CXX_FLAGS} -DSITE_UID_ROOT=\\\"${DCMTK_DICOM_ROOT_ID}\\\"") ENDIF() ExternalProject_Add(${proj} URL http://mitk.org/download/thirdparty/dcmtk-3.6.0.tar.gz INSTALL_DIR ${proj}-install + PATCH_COMMAND ${CMAKE_COMMAND} -DTEMPLATE_FILE:FILEPATH=${MITK_SOURCE_DIR}/CMakeExternals/EmptyFileForPatching.dummy -P ${MITK_SOURCE_DIR}/CMakeExternals/PatchDCMTK.cmake CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} -DDCMTK_OVERWRITE_WIN32_COMPILER_FLAGS:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=OFF "-DCMAKE_CXX_FLAGS:STRING=${ep_common_CXX_FLAGS} ${DCMTK_CXX_FLAGS}" "-DCMAKE_C_FLAGS:STRING=${ep_common_C_FLAGS} ${DCMTK_C_FLAGS}" -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/${proj}-install DEPENDS ${proj_DEPENDENCIES} ) SET(DCMTK_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-install) ELSE() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") ENDIF() ENDIF() diff --git a/CMakeExternals/EmptyFileForPatching.dummy b/CMakeExternals/EmptyFileForPatching.dummy new file mode 100644 index 0000000000..d20bf55bfb --- /dev/null +++ b/CMakeExternals/EmptyFileForPatching.dummy @@ -0,0 +1 @@ +@CONTENTS@ diff --git a/CMakeExternals/PatchDCMTK.cmake b/CMakeExternals/PatchDCMTK.cmake new file mode 100644 index 0000000000..88a21613de --- /dev/null +++ b/CMakeExternals/PatchDCMTK.cmake @@ -0,0 +1,15 @@ +# Called by DCMTK.cmake (ExternalProject_Add) as a patch for DCMTK. +# Makes pdf2dcm use "DOC" as modality for Encapsulated PDFs + +#message ("Patching dcmdata/apps/pdf2dcm.cc to use modality 'DOC'. Using template ${TEMPLATE_FILE}") + +# read whole file +file(STRINGS dcmdata/apps/pdf2dcm.cc sourceCode NEWLINE_CONSUME) + +# substitute "OT" for "DOC" (only single occurence where modality tag is set) +string(REGEX REPLACE "\"OT\"" "\"DOC\"" sourceCode ${sourceCode}) + +# set variable CONTENTS, which is substituted in TEMPLATE_FILE +set(CONTENTS ${sourceCode}) +configure_file(${TEMPLATE_FILE} dcmdata/apps/pdf2dcm.cc @ONLY) +