diff --git a/CMakeExternals/DCMTK.cmake b/CMakeExternals/DCMTK.cmake index 3265921650..84afd1b899 100644 --- a/CMakeExternals/DCMTK.cmake +++ b/CMakeExternals/DCMTK.cmake @@ -1,65 +1,71 @@ #----------------------------------------------------------------------------- # 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(CMAKE_GENERATOR MATCHES Xcode) + message(Using Xcode Generator) + set(DCMTK_PATCH_COMMAND ${CMAKE_COMMAND} -DTEMPLATE_FILE:FILEPATH=${MITK_SOURCE_DIR}/CMakeExternals/EmptyFileForPatching.dummy -P ${MITK_SOURCE_DIR}/CMakeExternals/PatchDCMTK-20122202.cmake) +endif() + 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() set (dcmtk_shared_flags "-DBUILD_SHARED_LIBS:BOOL=${MITK_DCMTK_BUILD_SHARED_LIBS}") if (NOT MITK_DCMTK_BUILD_SHARED_LIBS) set (dcmtk_shared_flags ${dcmtk_shared_flags} "-DDCMTK_FORCE_FPIC_ON_UNIX:BOOL=ON") endif() ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/dcmtk-3.6.1_20120222.tar.gz URL_MD5 86fa9e0f91e4e0c6b44d513ea48391d6 INSTALL_DIR ${proj}-install + PATCH_COMMAND ${DCMTK_PATCH_COMMAND} CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} -DDCMTK_OVERWRITE_WIN32_COMPILER_FLAGS:BOOL=OFF ${dcmtk_shared_flags} "-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 -DDCMTK_INSTALL_BINDIR:STRING=bin/${CMAKE_CFG_INTDIR} -DDCMTK_INSTALL_LIBDIR:STRING=lib/${CMAKE_CFG_INTDIR} -DDCMTK_WITH_DOXYGEN:BOOL=OFF -DDCMTK_WITH_ZLIB:BOOL=OFF # see bug #9894 -DDCMTK_WITH_OPENSSL:BOOL=OFF # see bug #9894 -DDCMTK_WITH_PNG:BOOL=OFF # see bug #9894 -DDCMTK_WITH_TIFF:BOOL=OFF # see bug #9894 -DDCMTK_WITH_XML:BOOL=OFF # see bug #9894 -DDCMTK_WITH_ICONV:BOOL=OFF # see bug #9894 DEPENDS ${proj_DEPENDENCIES} ) set(DCMTK_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-install) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() endif() diff --git a/CMakeExternals/PatchDCMTK-20122202.cmake b/CMakeExternals/PatchDCMTK-20122202.cmake new file mode 100644 index 0000000000..274bcc8dfd --- /dev/null +++ b/CMakeExternals/PatchDCMTK-20122202.cmake @@ -0,0 +1,24 @@ +# Called by DCMTK.cmake (ExternalProject_Add) as a patch for DCMTK. +# Changes DCMTK_BUILD_DATE so that superbuild will work with Xcode + +# read whole file +file(STRINGS CMakeLists.txt sourceCode NEWLINE_CONSUME) + +# Changing the way DCMTK_BUILD_DATE is set in CMakeLists.txt +# This way it is not a compiler flag but set in the dcmtk config file +string(REGEX REPLACE "ADD_DEFINITIONS[(]\"-DDCMTK_BUILD_DATE" "set(DCMTK_BUILD_DATE \"\\\\\"2012-02-22\\\\\"\")\n#ADD_DEFINITIONS[(]\"-DDCMTK_BUILD_DATE" sourceCode ${sourceCode}) + +# set variable CONTENTS, which is substituted in TEMPLATE_FILE +set(CONTENTS ${sourceCode}) +configure_file(${TEMPLATE_FILE} CMakeLists.txt @ONLY) + +# read whole file +file(STRINGS CMake/osconfig.h.in sourceCode2 NEWLINE_CONSUME) + +# Add DCMTK_BUILD_DATE to osconfig.h.in +string(REGEX REPLACE "\"@DCMTK_PACKAGE_DATE@\"" "\"@DCMTK_PACKAGE_DATE@\"\n\n#define DCMTK_BUILD_DATE @DCMTK_BUILD_DATE@\n" sourceCode2 ${sourceCode2}) + +# set variable CONTENTS, which is substituted in TEMPLATE_FILE +set(CONTENTS ${sourceCode2}) +configure_file(${TEMPLATE_FILE} CMake/osconfig.h.in @ONLY) +