diff --git a/CMake/FindDCMTK.cmake b/CMake/FindDCMTK.cmake new file mode 100644 index 0000000000..9750db2505 --- /dev/null +++ b/CMake/FindDCMTK.cmake @@ -0,0 +1,157 @@ +# adapted version of FindDCMTK, better suited for super-builds + +# - find DCMTK libraries and applications +# + +# DCMTK_INCLUDE_DIRS - Directories to include to use DCMTK +# DCMTK_LIBRARIES - Files to link against to use DCMTK +# DCMTK_FOUND - If false, don't try to use DCMTK +# DCMTK_DIR - (optional) Source directory for DCMTK +# +# DCMTK_DIR can be used to make it simpler to find the various include +# directories and compiled libraries if you've just compiled it in the +# source tree. Just set it to the root of the tree where you extracted +# the source (default to /usr/include/dcmtk/) + +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# Copyright 2009-2010 Mathieu Malaterre +# Copyright 2010 Thomas Sondergaard +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# +# Written for VXL by Amitha Perera. +# Upgraded for GDCM by Mathieu Malaterre. +# Modified for EasyViz by Thomas Sondergaard. +# + +# prefer DCMTK_DIR over default system paths like /usr/lib +SET(CMAKE_PREFIX_PATH ${DCMTK_DIR}/lib ${CMAKE_PREFIX_PATH}) # this is given to FIND_LIBRARY or FIND_PATH + +if(NOT DCMTK_FOUND AND NOT DCMTK_DIR) + set(DCMTK_DIR + "/usr/include/dcmtk/" + CACHE + PATH + "Root of DCMTK source tree (optional).") + mark_as_advanced(DCMTK_DIR) +endif() + +foreach(lib + dcmdata + dcmimage + dcmimgle + dcmjpeg + dcmnet + dcmpstat + dcmqrdb + dcmsign + dcmsr + dcmtls + ijg12 + ijg16 + ijg8 + oflog + ofstd) + + find_library(DCMTK_${lib}_LIBRARY + ${lib} + PATHS + ${DCMTK_DIR}/${lib}/libsrc + ${DCMTK_DIR}/${lib}/libsrc/Release + ${DCMTK_DIR}/${lib}/libsrc/Debug + ${DCMTK_DIR}/${lib}/Release + ${DCMTK_DIR}/${lib}/Debug + ${DCMTK_DIR}/lib + NO_DEFAULT_PATH + ) + + mark_as_advanced(DCMTK_${lib}_LIBRARY) + + #message("** DCMTKs ${lib} found at ${DCMTK_${lib}_LIBRARY}") + + if(DCMTK_${lib}_LIBRARY) + list(APPEND DCMTK_LIBRARIES ${DCMTK_${lib}_LIBRARY}) + endif() + +endforeach() + + +set(DCMTK_config_TEST_HEADER osconfig.h) +set(DCMTK_dcmdata_TEST_HEADER dctypes.h) +set(DCMTK_dcmimage_TEST_HEADER dicoimg.h) +set(DCMTK_dcmimgle_TEST_HEADER dcmimage.h) +set(DCMTK_dcmjpeg_TEST_HEADER djdecode.h) +set(DCMTK_dcmnet_TEST_HEADER assoc.h) +set(DCMTK_dcmpstat_TEST_HEADER dcmpstat.h) +set(DCMTK_dcmqrdb_TEST_HEADER dcmqrdba.h) +set(DCMTK_dcmsign_TEST_HEADER sicert.h) +set(DCMTK_dcmsr_TEST_HEADER dsrtree.h) +set(DCMTK_dcmtls_TEST_HEADER tlslayer.h) +set(DCMTK_ofstd_TEST_HEADER ofstdinc.h) + +foreach(dir + config + dcmdata + dcmimage + dcmimgle + dcmjpeg + dcmnet + dcmpstat + dcmqrdb + dcmsign + dcmsr + dcmtls + ofstd) + find_path(DCMTK_${dir}_INCLUDE_DIR + ${DCMTK_${dir}_TEST_HEADER} + PATHS + ${DCMTK_DIR}/${dir}/include + ${DCMTK_DIR}/${dir} + ${DCMTK_DIR}/include/dcmtk/${dir} + ${DCMTK_DIR}/include/${dir}) + + mark_as_advanced(DCMTK_${dir}_INCLUDE_DIR) + #message("** DCMTKs ${dir} found at ${DCMTK_${dir}_INCLUDE_DIR}") + + if(DCMTK_${dir}_INCLUDE_DIR) + list(APPEND + DCMTK_INCLUDE_DIRS + ${DCMTK_${dir}_INCLUDE_DIR}) + endif() +endforeach() + +if(WIN32) + list(APPEND DCMTK_LIBRARIES netapi32 wsock32) +endif() + +if(DCMTK_ofstd_INCLUDE_DIR) + get_filename_component(DCMTK_dcmtk_INCLUDE_DIR + ${DCMTK_ofstd_INCLUDE_DIR} + PATH + CACHE) + list(APPEND DCMTK_INCLUDE_DIRS ${DCMTK_dcmtk_INCLUDE_DIR}) + mark_as_advanced(DCMTK_dcmtk_INCLUDE_DIR) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(DCMTK DEFAULT_MSG + DCMTK_config_INCLUDE_DIR + DCMTK_ofstd_INCLUDE_DIR + DCMTK_ofstd_LIBRARY + DCMTK_dcmdata_INCLUDE_DIR + DCMTK_dcmdata_LIBRARY + DCMTK_dcmimgle_INCLUDE_DIR + DCMTK_dcmimgle_LIBRARY) + +# Compatibility: This variable is deprecated +set(DCMTK_INCLUDE_DIR ${DCMTK_INCLUDE_DIRS}) diff --git a/CMake/PackageDepends/MITK_DCMTK_Config.cmake b/CMake/PackageDepends/MITK_DCMTK_Config.cmake new file mode 100644 index 0000000000..4a1bd503a5 --- /dev/null +++ b/CMake/PackageDepends/MITK_DCMTK_Config.cmake @@ -0,0 +1,48 @@ +IF(MITK_USE_DCMTK) + +IF(NOT DCMTK_DIR) + SET(DCMTK_DIR "$ENV{DCMTK_DIR}" CACHE PATH "Location of DCMTK") + SET(DCMTK_DIR "$ENV{DCMTK_DIR}") + IF(NOT DCMTK_DIR) + MESSAGE(FATAL_ERROR "DCMTK_DIR not set. Cannot proceed.") + ENDIF(NOT DCMTK_DIR) +ENDIF(NOT DCMTK_DIR) + +FIND_PACKAGE(DCMTK) + +IF(NOT DCMTK_FOUND) + MESSAGE(SEND_ERROR "DCMTK development files not found.\n Please check variables (e.g. DCMTK_DIR) for include directories and libraries.\nYou may set environment variable DCMTK_DIR before pressing 'configure'") +ENDIF(NOT DCMTK_FOUND) + +IF( NOT WIN32 ) + SET(MISSING_LIBS_REQUIRED_BY_DCMTK wrap tiff) +ENDIF( NOT WIN32 ) + +SET(QT_USE_QTSQL 1) + +IF(EXISTS ${DCMTK_config_INCLUDE_DIR}/osconfig.h) + +FILE(READ ${DCMTK_config_INCLUDE_DIR}/osconfig.h _osconfig_h) + IF(NOT _osconfig_h MATCHES "PACKAGE_VERSION_NUMBER \"354\"") + MESSAGE(STATUS "Found DCMTK newer that 3.5.4 ...") + SET(MITK_USE_DCMTK_NEWER_THAN_3_5_4 TRUE) + # assume the new oflog library is located next to the others + # this can be removed if FindDCMTK is adapted for 3.5.5 + GET_FILENAME_COMPONENT(_DCMTK_lib_dir ${DCMTK_ofstd_LIBRARY} PATH) + FIND_LIBRARY(DCMTK_oflog_LIBRARY oflog ${_DCMTK_lib_dir} ) + LIST(APPEND DCMTK_LIBRARIES ${DCMTK_oflog_LIBRARY}) + ENDIF(NOT _osconfig_h MATCHES "PACKAGE_VERSION_NUMBER \"354\"") +ENDIF(EXISTS ${DCMTK_config_INCLUDE_DIR}/osconfig.h) + +# +# Usually all code should be adapted to DCMTK 3.6 +# If necessary you could configure the MITK_USE_DCMTK_NEWER_THAN_3_5_4 variable +# to configure a header file for ifdefs: +# CONFIGURE_FILE( mitkDCMTKConfig.h.in mitkDCMTKConfig.h ) + +LIST(APPEND ALL_INCLUDE_DIRECTORIES ${DCMTK_INCLUDE_DIR} ${DCMTK_DIR}/include) +LIST(APPEND ALL_LIBRARIES ${DCMTK_LIBRARIES} ${MISSING_LIBS_REQUIRED_BY_DCMTK}) +#link_directories() + +ENDIF(MITK_USE_DCMTK) +