From d42664c506349866cb41e5a377436d4302876225 Mon Sep 17 00:00:00 2001 From: Romain Garrigues <romain.garrigues@c-s.fr> Date: Wed, 30 Apr 2008 15:53:18 +0000 Subject: [PATCH] Ajout d'ITK version 3.6.0 --- Utilities/ITK/CMakeLists.txt | 543 +++++++++++++++++++++++++++++++++++ 1 file changed, 543 insertions(+) create mode 100644 Utilities/ITK/CMakeLists.txt diff --git a/Utilities/ITK/CMakeLists.txt b/Utilities/ITK/CMakeLists.txt new file mode 100644 index 0000000000..97c4eb4b61 --- /dev/null +++ b/Utilities/ITK/CMakeLists.txt @@ -0,0 +1,543 @@ +# This is the root ITK CMakeLists file. +CMAKE_MINIMUM_REQUIRED(VERSION 2.4) +IF(COMMAND CMAKE_POLICY) + CMAKE_POLICY(SET CMP0003 NEW) +ENDIF(COMMAND CMAKE_POLICY) + + +PROJECT(ITK) +INCLUDE_REGULAR_EXPRESSION("^([Nn]rrd|itk|vtk|vnl|vcl|vxl|v3p|f2c|netlib|ce|itpack|DICOM|meta|png|dbh|tif|jpeg|zlib|gdcm).*$") +SOURCE_GROUP("XML Files" REGULAR_EXPRESSION "[.]xml$") + +#----------------------------------------------------------------------------- +# ITK version number. An even minor number corresponds to releases. +SET(ITK_VERSION_MAJOR "3") +SET(ITK_VERSION_MINOR "6") +SET(ITK_VERSION_PATCH "0") + +# Version string should not include patch level. The major.minor is +# enough to distinguish available features of the toolkit. +SET(ITK_VERSION_STRING "${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}") + +#----------------------------------------------------------------------------- +# Load some macros. +INCLUDE(${ITK_SOURCE_DIR}/Utilities/itkThirdParty.cmake) + + +SET(CMAKE_MODULE_PATH ${ITK_SOURCE_DIR}/CMake) +# Deal with FFT v3 Options +MARK_AS_ADVANCED(USE_FFTWD) +OPTION(USE_FFTWD "Use double precision FFTW if found" OFF) +MARK_AS_ADVANCED(USE_FFTWF) +OPTION(USE_FFTWF "Use single precision FFTW if found" OFF) +IF( USE_FFTWD OR USE_FFTWF ) + FIND_PACKAGE( FFTW ) +ENDIF( USE_FFTWD OR USE_FFTWF ) + +# Deal with SGI SCSL Options +OPTION(USE_SCSL "Use the SGI SCSL High Performance Computing math library" OFF) +MARK_AS_ADVANCED(USE_SCSL) +IF( USE_SCSL ) + FIND_PACKAGE( SCSL ) +ENDIF( USE_SCSL ) + +# Deal with MINC2 options +MARK_AS_ADVANCED(ITK_USE_MINC2) +OPTION(ITK_USE_MINC2 "Use MINC2 File Format" OFF) +IF( ITK_USE_MINC2 ) + FIND_PACKAGE( MINC2 ) + IF( NOT MINC2_FOUND ) + MESSAGE("You requested to use MINC2 but some components are missing") + ENDIF( NOT MINC2_FOUND ) +ENDIF( ITK_USE_MINC2 ) + + +# Put "." in the rpath of all ITK shared libraries. +LINK_DIRECTORIES(.) + + +#----------------------------------------------------------------------------- +# Provide compatibility options. +OPTION(ITK_LEGACY_REMOVE "Remove all legacy code completely." OFF) +OPTION(ITK_LEGACY_SILENT "Silence all legacy code messages." OFF) +MARK_AS_ADVANCED(ITK_LEGACY_REMOVE ITK_LEGACY_SILENT) + +#----------------------------------------------------------------------------- +# ITK build patented algorithms +OPTION(ITK_USE_PATENTED "Build algorithms that are covered with Patents. It is YOUR responsibility to obtain a license from the patent holder in order to use these methods." OFF) +MARK_AS_ADVANCED(ITK_USE_PATENTED) + +#----------------------------------------------------------------------------- +# ITK build classes that are in the review process +OPTION(ITK_USE_REVIEW "Build algorithms that are candidates to be included in the Toolkit. This classes are not covered by the Backward Compatibility Policy, nor the Copyright Policy of ITK." OFF) +MARK_AS_ADVANCED(ITK_USE_REVIEW) + +#----------------------------------------------------------------------------- +# ITK uses KWStyle for checking the coding style +OPTION(ITK_USE_KWSTYLE "Run KWStyle in order to check for violations of the coding standard." OFF) +MARK_AS_ADVANCED(ITK_USE_KWSTYLE) + +IF(ITK_USE_KWSTYLE) + FIND_PROGRAM(KWSTYLE_EXECUTABLE + NAMES KWStyle + PATHS + /usr/local/bin + ) + + MARK_AS_ADVANCED(KWSTYLE_EXECUTABLE) + ADD_CUSTOM_COMMAND( + OUTPUT ${ITK_BINARY_DIR}/KWStyleReport.txt + COMMAND ${KWSTYLE_EXECUTABLE} + ARGS -xml ${ITK_BINARY_DIR}/ITK.kws.xml -o ${ITK_SOURCE_DIR}/Utilities/KWStyle/ITKOverwrite.txt ${KWSTYLE_ARGUMENTS} -D ${ITK_BINARY_DIR}/ITKFiles.txt + COMMENT "Coding Style Checker" + ) + ADD_CUSTOM_TARGET(StyleCheck DEPENDS ${ITK_BINARY_DIR}/KWStyleReport.txt) +ENDIF(ITK_USE_KWSTYLE) + +#----------------------------------------------------------------------------- +# ITK turn on concept checking +IF( NOT BORLAND ) + OPTION(ITK_USE_CONCEPT_CHECKING "Turn on concept checking to give helpful errors at compile time if a type cannot be used as a template parameter." ON) + MARK_AS_ADVANCED(ITK_USE_CONCEPT_CHECKING) + OPTION(ITK_USE_STRICT_CONCEPT_CHECKING "Turn on Strict concept checking to give more stringent errors at compile time if a type cannot be used as a template parameter." OFF) + MARK_AS_ADVANCED(ITK_USE_STRICT_CONCEPT_CHECKING) +ELSE( NOT BORLAND ) + SET(ITK_USE_CONCEPT_CHECKING OFF) + MARK_AS_ADVANCED(ITK_USE_CONCEPT_CHECKING) + SET(ITK_USE_STRICT_CONCEPT_CHECKING OFF) + MARK_AS_ADVANCED(ITK_USE_STRICT_CONCEPT_CHECKING) +ENDIF( NOT BORLAND ) + +#----------------------------------------------------------------------------- +# ITK turn on experimental version of accelerated image registration +OPTION(ITK_USE_OPTIMIZED_REGISTRATION_METHODS "Turn on the experimental version of accelerated registration methods." OFF) +MARK_AS_ADVANCED(ITK_USE_OPTIMIZED_REGISTRATION_METHODS) +IF(ITK_USE_OPTIMIZED_REGISTRATION_METHODS) + IF(NOT ITK_USE_REVIEW) + MESSAGE(FATAL_ERROR "ITK_USE_REVIEW is currently OFF but it should be ON if you want to use the experimental optimized registration methods.") + ENDIF(NOT ITK_USE_REVIEW) + # Warn the user about the implications of turning optimized registration methods ON + SET(msg "Warning: You have chosen to enable the use of Optimizer Registration Methods.") + SET(msg "${msg} These methods add multi-threading capabilities to several image metrics") + SET(msg "${msg} as well as some Transforms and Interpolators. In order to take full advantage") + SET(msg "${msg} of these new features you will have to also add some new calls to these components.") + SET(msg "${msg} Please look at the files in the Examples/Review directory for further details.") + +# display the message during the setup +MESSAGE("${msg}") + + +ENDIF(ITK_USE_OPTIMIZED_REGISTRATION_METHODS) + +#----------------------------------------------------------------------------- +# ITK turn on the use of experimental IO factories for the TransformFileReader and TransformFileWriter +OPTION(ITK_USE_TRANSFORM_IO_FACTORIES "Turn on the experimental IO factories for reading and writing transforms." OFF) +MARK_AS_ADVANCED(ITK_USE_TRANSFORM_IO_FACTORIES) +IF(ITK_USE_TRANSFORM_IO_FACTORIES) + IF(NOT ITK_USE_REVIEW) + MESSAGE(FATAL_ERROR "ITK_USE_REVIEW is currently OFF but it should be ON if you want to use the experimental transform IO factories.") + ENDIF(NOT ITK_USE_REVIEW) +ENDIF(ITK_USE_TRANSFORM_IO_FACTORIES) + +#----------------------------------------------------------------------------- +# ITK turn on the correct usage of oriented images in gradient computations and image registration. +OPTION(ITK_USE_ORIENTED_IMAGE_DIRECTION "Turn on correct use of oriented images direction in gradient computation and image registration." ON) +MARK_AS_ADVANCED(ITK_USE_ORIENTED_IMAGE_DIRECTION) + +#----------------------------------------------------------------------------- +# ITK turn on the use of Template Meta Programming techniques for unrolling loops of array-like operations +OPTION(ITK_USE_TEMPLATE_META_PROGRAMMING_LOOP_UNROLLING "Turn on the use of Template Meta-Programming techniques for unrolling for-loops at compile time." OFF) +MARK_AS_ADVANCED(ITK_USE_TEMPLATE_META_PROGRAMMING_LOOP_UNROLLING) + +OPTION(ITK_USE_DEPRECATED_LEVELSET_INTERPOLATION "Turn on the use of a sparse field level set surface interpolation method that has been deprecated since ITK 3.6. Turn this flag ON to exactly replicate the behavior of ITK<=3.4." OFF) +MARK_AS_ADVANCED(ITK_USE_DEPRECATED_LEVELSET_INTERPOLATION) + +#----------------------------------------------------------------------------- +# Installation vars. +# ITK_INSTALL_BIN_DIR - binary dir (executables) +# ITK_INSTALL_LIB_DIR - library dir (libs) +# ITK_INSTALL_DATA_DIR - share dir (say, examples, data, etc) +# ITK_INSTALL_INCLUDE_DIR - include dir (headers) +# ITK_INSTALL_PACKAGE_DIR - package/export configuration files +# ITK_INSTALL_NO_DEVELOPMENT - do not install development files +# ITK_INSTALL_NO_RUNTIME - do not install runtime files +# ITK_INSTALL_NO_DOCUMENTATION - do not install documentation files + +IF(NOT ITK_INSTALL_BIN_DIR) + SET(ITK_INSTALL_BIN_DIR "/bin") +ENDIF(NOT ITK_INSTALL_BIN_DIR) + +IF(NOT ITK_INSTALL_LIB_DIR) + SET(ITK_INSTALL_LIB_DIR "/lib/otb") +ENDIF(NOT ITK_INSTALL_LIB_DIR) + +IF(NOT ITK_INSTALL_DATA_DIR) + SET(ITK_INSTALL_DATA_DIR "/share/otb/Utilities/ITK") +ENDIF(NOT ITK_INSTALL_DATA_DIR) + +IF(NOT ITK_INSTALL_INCLUDE_DIR) + SET(ITK_INSTALL_INCLUDE_DIR "/include/otb/Utilities/ITK") +ENDIF(NOT ITK_INSTALL_INCLUDE_DIR) + +IF(NOT ITK_INSTALL_PACKAGE_DIR) + SET(ITK_INSTALL_PACKAGE_DIR ${ITK_INSTALL_LIB_DIR} + CACHE INTERNAL "") +ENDIF(NOT ITK_INSTALL_PACKAGE_DIR) + +IF(NOT ITK_INSTALL_NO_DEVELOPMENT) + SET(ITK_INSTALL_NO_DEVELOPMENT 0) +ENDIF(NOT ITK_INSTALL_NO_DEVELOPMENT) + +IF(NOT ITK_INSTALL_NO_RUNTIME) + SET(ITK_INSTALL_NO_RUNTIME 0) +ENDIF(NOT ITK_INSTALL_NO_RUNTIME) + +IF(NOT ITK_INSTALL_NO_DOCUMENTATION) + SET(ITK_INSTALL_NO_DOCUMENTATION 0) +ENDIF(NOT ITK_INSTALL_NO_DOCUMENTATION) + +SET(ITK_INSTALL_NO_LIBRARIES) +IF(ITK_BUILD_SHARED_LIBS) + IF(ITK_INSTALL_NO_RUNTIME AND ITK_INSTALL_NO_DEVELOPMENT) + SET(ITK_INSTALL_NO_LIBRARIES 1) + ENDIF(ITK_INSTALL_NO_RUNTIME AND ITK_INSTALL_NO_DEVELOPMENT) +ELSE(ITK_BUILD_SHARED_LIBS) + IF(ITK_INSTALL_NO_DEVELOPMENT) + SET(ITK_INSTALL_NO_LIBRARIES 1) + ENDIF(ITK_INSTALL_NO_DEVELOPMENT) +ENDIF(ITK_BUILD_SHARED_LIBS) + +# Because INSTALL_* commands require a leading / and because INSTALL (cmake 2.4 +# and newer) requires no leading / to install under INSTALL_PREFIX, we +# are stripping the leading /. In the future, there should be no leading +# / in any install directory variables +STRING(REGEX REPLACE "^/" "" ITK_INSTALL_LIB_DIR_CM24 "${ITK_INSTALL_LIB_DIR}") +STRING(REGEX REPLACE "^/" "" ITK_INSTALL_BIN_DIR_CM24 "${ITK_INSTALL_BIN_DIR}") +STRING(REGEX REPLACE "^/" "" ITK_INSTALL_INCLUDE_DIR_CM24 "${ITK_INSTALL_INCLUDE_DIR}") +STRING(REGEX REPLACE "^/" "" ITK_INSTALL_PACKAGE_DIR_CM24 "${ITK_INSTALL_PACKAGE_DIR}") +STRING(REGEX REPLACE "^/" "" ITK_INSTALL_DOXYGEN_DIR_CM24 "${ITK_INSTALL_DOXYGEN_DIR}") +STRING(REGEX REPLACE "^/" "" ITK_INSTALL_TCL_DIR_CM24 "${ITK_INSTALL_TCL_DIR}") +STRING(REGEX REPLACE "^/" "" ITK_INSTALL_JAVA_DIR_CM24 "${ITK_INSTALL_JAVA_DIR}") + +# set ITK_DIR so it can be used by subprojects +SET(ITK_DIR "${CMAKE_BINARY_DIR}" CACHE INTERNAL "ITK dir to be used by subprojects") + +#----------------------------------------------------------------------------- +# Set up CPack support, to be able to distribute ITK binary packages. It will +# be particulary useful to distributed prebuilt ITK witk extended languages +# support enable +# +INCLUDE(InstallRequiredSystemLibraries) +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Insight Toolkit") +SET(CPACK_PACKAGE_VENDOR "ISC") +SET(CPACK_PACKAGE_VERSION_MAJOR "${ITK_VERSION_MAJOR}") +SET(CPACK_PACKAGE_VERSION_MINOR "${ITK_VERSION_MINOR}") +SET(CPACK_PACKAGE_VERSION_PATCH "${ITK_VERSION_PATCH}") +SET(CPACK_PACKAGE_INSTALL_DIRECTORY "InsightToolkit-${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}") +# SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") +SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright/ITKCopyright.txt") +INCLUDE(CPack) + + +IF(WIN32) + IF(BUILD_SHARED_LIBS) + SET(ITK_COMMON_BUILD_TYPE "SHARED") + ELSE(BUILD_SHARED_LIBS) + SET(ITK_COMMON_BUILD_TYPE "STATIC") + ENDIF(BUILD_SHARED_LIBS) + SET(BUILD_SHARED_LIBS OFF) +ENDIF(WIN32) + +OPTION(ITK_USE_SYSTEM_VXL "Use an outside build of VXL." OFF) +MARK_AS_ADVANCED(ITK_USE_SYSTEM_VXL) +IF(ITK_USE_SYSTEM_VXL) + FIND_PACKAGE(VXL) + IF(VXL_FOUND) + INCLUDE(${VXL_CMAKE_DIR}/UseVXL.cmake) + SET(VXL_NUMERICS_LIBRARIES vnl vnl_algo netlib vcl) + ELSE(VXL_FOUND) + MESSAGE(FATAL_ERROR "Must set VXL_DIR for ITK_USE_SYSTEM_VXL.") + ENDIF(VXL_FOUND) +ELSE(ITK_USE_SYSTEM_VXL) + SET(VXL_NETLIB_INCLUDE_DIR ${ITK_SOURCE_DIR}/Utilities/vxl/v3p/netlib) + SET(VXL_NUMERICS_LIBRARIES itkvnl itkvnl_algo itkvcl) +ENDIF(ITK_USE_SYSTEM_VXL) + + +# Provide options to use system versions of third-party libraries. +ITK_THIRD_PARTY_OPTION(ZLIB zlib) +ITK_THIRD_PARTY_OPTION(PNG png) +ITK_THIRD_PARTY_OPTION(TIFF tiff) + +OPTION(ITK_USE_LIBXML2 "Use LIBXML2." OFF) +MARK_AS_ADVANCED(ITK_USE_LIBXML2) +ITK_THIRD_PARTY_OPTION(LIBXML2 libxml2) + +#----------------------------------------------------------------------------- +# Dispatch the build into the proper subdirectories. +SUBDIRS(Utilities Code) + + +#----------------------------------------------------------------------------- +# ITK requires special compiler flags on some platforms. +IF(CMAKE_COMPILER_IS_GNUCXX) + SET(ITK_REQUIRED_C_FLAGS "${ITK_REQUIRED_C_FLAGS} -w") + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -ftemplate-depth-50") + IF(APPLE) + # -no-cpp-precomp and -Wno-long-double were compiler flags present + # only in Apple's gcc and not in the FSF gcc. The flags are obsolete + # and totally removed in gcc 4.2 and later. I believe they are only + # needed with gcc 3.3 and earlier. + INCLUDE(${ITK_SOURCE_DIR}/CMake/itkCheckCXXAcceptsFlags.cmake) + itkCHECK_CXX_ACCEPTS_FLAGS("-no-cpp-precomp" CXX_HAS_CPP_PRECOMP_FLAG) + IF(CXX_HAS_CPP_PRECOMP_FLAG) + SET(ITK_REQUIRED_C_FLAGS "${ITK_REQUIRED_C_FLAGS} -no-cpp-precomp") + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -no-cpp-precomp") + ENDIF(CXX_HAS_CPP_PRECOMP_FLAG) + itkCHECK_CXX_ACCEPTS_FLAGS("-Wno-long-double" CXX_HAS_LONGDOUBLE_FLAG) + IF(CXX_HAS_LONGDOUBLE_FLAG) + SET(ITK_REQUIRED_C_FLAGS "${ITK_REQUIRED_C_FLAGS} -Wno-long-double") + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -Wno-long-double") + ENDIF(CXX_HAS_LONGDOUBLE_FLAG) + + OPTION(ITK_USE_64BITS_APPLE_TRUNCATION_WARNING "Turn on warnings on 64bits to 32bits truncations." OFF) + MARK_AS_ADVANCED(ITK_USE_64BITS_APPLE_TRUNCATION_WARNING) + + ENDIF(APPLE) +ENDIF(CMAKE_COMPILER_IS_GNUCXX) + +IF(UNIX) + IF(NOT CMAKE_COMPILER_IS_GNUCXX) + INCLUDE(${ITK_SOURCE_DIR}/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cmake) + TESTNO_ICC_IDYNAMIC_NEEDED(NO_ICC_IDYNAMIC_NEEDED ${ITK_SOURCE_DIR}/CMake ) + IF(NO_ICC_IDYNAMIC_NEEDED) + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS}") + ELSE(NO_ICC_IDYNAMIC_NEEDED) + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -i_dynamic") + ENDIF(NO_ICC_IDYNAMIC_NEEDED) + ENDIF(NOT CMAKE_COMPILER_IS_GNUCXX) +ENDIF(UNIX) + +IF(BORLAND) + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -w- -whid -waus -wpar") + SET(ITK_REQUIRED_C_FLAGS "${ITK_REQUIRED_C_FLAGS} -w- -whid -waus -wpar") +ENDIF(BORLAND) + +# Force the use of ansi cxx flags (i.e. -LANG:std on sgi ) +IF("x${CMAKE_ANSI_CXXFLAGS}" MATCHES "^x.*[^ ]") + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} ${CMAKE_ANSI_CXXFLAGS}") +ENDIF("x${CMAKE_ANSI_CXXFLAGS}" MATCHES "^x.*[^ ]") +IF("x${CMAKE_ANSI_CFLAGS}" MATCHES "^x.*[^ ]") + SET(ITK_REQUIRED_C_FLAGS "${ITK_REQUIRED_C_FLAGS} ${CMAKE_ANSI_CFLAGS}") +ENDIF("x${CMAKE_ANSI_CFLAGS}" MATCHES "^x.*[^ ]") + +IF(CMAKE_SYSTEM MATCHES "IRIX.*") + IF(NOT CMAKE_COMPILER_IS_GNUCXX) + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -woff 15,84,1110,1209,1424,1468,3102,3210,3439 -no_auto_include -ptused -no_prelink") + SET(ITK_REQUIRED_LINK_FLAGS "${ITK_REQUIRED_LINK_FLAGS} -Wl,-woff15") + ENDIF(NOT CMAKE_COMPILER_IS_GNUCXX) +ENDIF(CMAKE_SYSTEM MATCHES "IRIX.*") + +IF(MINGW) + LINK_LIBRARIES(gdi32) +ENDIF(MINGW) + +# for the gnu compiler a -D_PTHREADS is needed on sun +# for the native compiler a -mt flag is needed on the sun +IF(CMAKE_USE_PTHREADS) + IF(CMAKE_SYSTEM MATCHES "SunOS.*") + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -D_PTHREADS") + ELSE(CMAKE_COMPILER_IS_GNUCXX) + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -mt") + SET(ITK_REQUIRED_C_FLAGS "${ITK_REQUIRED_C_FLAGS} -mt") + ENDIF(CMAKE_COMPILER_IS_GNUCXX) + ENDIF(CMAKE_SYSTEM MATCHES "SunOS.*") +ENDIF(CMAKE_USE_PTHREADS) + +IF(WIN32) + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -DNOMINMAX") +ENDIF(WIN32) + +#----------------------------------------------------------------------------- +# Test for an Objective-C++ compiler. +SET(ITK_OBJCXX_COMPILER_WORKS 0) +IF(APPLE) + TRY_COMPILE(ITK_OBJCXX_COMPILER_WORKS + ${ITK_BINARY_DIR}/CMakeTmp + ${ITK_SOURCE_DIR}/CMake/itkTestObjCxxCompiler.mm + OUTPUT_VARIABLE ITK_OBJCXX_TRY_COMPILE_OUTPUT) + IF( ITK_OBJCXX_COMPILER_WORKS ) + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the Objective-C compiler works passed with " + "the following output:\n${ITK_OBJCXX_TRY_COMPILE_OUTPUT}\n\n") + ELSE( ITK_OBJCXX_COMPILER_WORKS ) + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the Objective-C compiler works failed with " + "the following output:\n${ITK_OBJCXX_TRY_COMPILE_OUTPUT}\n\n") + ENDIF( ITK_OBJCXX_COMPILER_WORKS ) +ENDIF(APPLE) + +# mingw thread support +IF(MINGW) + SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -mthreads") + SET(ITK_REQUIRED_C_FLAGS "${ITK_REQUIRED_C_FLAGS} -mthreads") + SET(ITK_REQUIRED_LINK_FLAGS "${ITK_REQUIRED_LINK_FLAGS} -mthreads") +ENDIF(MINGW) + +#----------------------------------------------------------------------------- +# Adjust the compiler flags to avoid all warning. +IF(UNIX) + + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") + + # CMake versions before 2.4 did not put the source-file-specific flags + # after the directory-level flags. Remove optimization flags from the + # CMAKE_CXX_FLAGS* variables so they can be overridden. + IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.4) + FOREACH(c "" "_DEBUG" "_RELEASE" "_MINSIZEREL" "_RELWITHDEBINFO") + STRING(REGEX REPLACE + "-O[^ ]*( |$)" "" CMAKE_CXX_FLAGS${c} "${CMAKE_CXX_FLAGS${c}}") + ENDFOREACH(c) + ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.4) + ENDIF(CMAKE_COMPILER_IS_GNUCXX) + + IF(CMAKE_COMPILER_IS_GNUCC) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") + + # CMake versions before 2.4 did not put the source-file-specific flags + # after the directory-level flags. Remove optimization flags from the + # CMAKE_C_FLAGS* variables so they can be overridden. + IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.4) + FOREACH(c "" "_DEBUG" "_RELEASE" "_MINSIZEREL" "_RELWITHDEBINFO") + STRING(REGEX REPLACE + "-O[^ ]*( |$)" "" CMAKE_C_FLAGS${c} "${CMAKE_C_FLAGS${c}}") + ENDFOREACH(c) + ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.4) + ENDIF(CMAKE_COMPILER_IS_GNUCC) + +ENDIF(UNIX) + + +#----------------------------------------------------------------------------- +# Find platform-specific differences in the handling of IEEE floating point +# special values. + +# +# See if compiler preprocessor has the __FUNCTION__ directive used by itkExceptionMacro +# +INCLUDE(${ITK_SOURCE_DIR}/CMake/CheckCPPDirective.cmake) +CHECK_CPP_DIRECTIVE_EXISTS(__FUNCTION__ ITK_CPP_FUNCTION) + + +#----------------------------------------------------------------------------- +# Configure the default ITK_BRAINWEB_DATA_ROOT for the location of ITK Data. +# When this data is available, additional 3D tests are enabled. +FIND_PATH(ITK_BRAINWEB_DATA_ROOT brainweb165a10f17.mha + DOC "Directory with data taken from http://public.kitware.com/pub/itk/Data/BrainWeb/") +MARK_AS_ADVANCED(ITK_BRAINWEB_DATA_ROOT) + +#----------------------------------------------------------------------------- +# Configure the default ITK_MRI_UNC_DATABASE_DATA_ROOT for the location of the +# database of healthy volunteers MRI brain images. +# When this data is available, additional 3D tests are enabled. +FIND_PATH(ITK_MRI_UNC_DATABASE_DATA_ROOT LICENSE.txt + DOC "Directory with data taken from http://public.kitware.com/pub/itk/Data/HealthyVolunteersMRIDatabase/") +MARK_AS_ADVANCED(ITK_MRI_UNC_DATABASE_DATA_ROOT) + +#----------------------------------------------------------------------------- +# This flag is used in particular, to enable some tests that require large memory to run. +# This probably can be discovered at configuration time by CMake. (Check with CMake developers). +SET(ITK_COMPUTER_MEMORY_SIZE 1 CACHE STRING "Provide here the size of your RAM Memory in GigaBytes") +MARK_AS_ADVANCED(ITK_COMPUTER_MEMORY_SIZE) + +#----------------------------------------------------------------------------- +# Configure files with settings for use by the build. +CONFIGURE_FILE(${ITK_SOURCE_DIR}/itkConfigure.h.in + ${ITK_BINARY_DIR}/itkConfigure.h) +IF(NOT ITK_INSTALL_NO_DEVELOPMENT) + INSTALL(FILES ${ITK_BINARY_DIR}/itkConfigure.h + DESTINATION ${ITK_INSTALL_INCLUDE_DIR_CM24} + COMPONENT Development) +ENDIF(NOT ITK_INSTALL_NO_DEVELOPMENT) + +CONFIGURE_FILE(${ITK_SOURCE_DIR}/Utilities/Doxygen/doxygen.config.in + ${ITK_BINARY_DIR}/doxygen.config) + +CONFIGURE_FILE(${ITK_SOURCE_DIR}/Utilities/Doxygen/itkdoxygen.pl.in + ${ITK_BINARY_DIR}/itkdoxygen.pl) + +CONFIGURE_FILE(${ITK_SOURCE_DIR}/Utilities/KWStyle/ITK.kws.xml.in + ${ITK_BINARY_DIR}/ITK.kws.xml) + +CONFIGURE_FILE(${ITK_SOURCE_DIR}/Utilities/KWStyle/ITKFiles.txt.in + ${ITK_BINARY_DIR}/ITKFiles.txt) + +#----------------------------------------------------------------------------- +# The entire ITK tree should use the same include path, except for the +# Wrapping directory. + +# Create the list of include directories needed for ITK header files. +INCLUDE(${ITK_SOURCE_DIR}/itkIncludeDirectories.cmake) + +# This should be the only INCLUDE_DIRECTORIES command in the entire +# tree, except for the Utilities and Wrapping directories. We need to +# do this in one place to make sure the order is correct. +INCLUDE_DIRECTORIES( + ${ITK_INCLUDE_DIRS_BUILD_TREE} + ${ITK_INCLUDE_DIRS_BUILD_TREE_CXX} + ${ITK_INCLUDE_DIRS_SYSTEM} +) + +#----------------------------------------------------------------------------- +# ITK_USE_SYSTEM_GDCM is provided so that you can use an installed or external +# version of gdcm. If its on, you must specify the variables +# Important: INCLUDE(${GDCM_USE_FILE}) *has* to be set after the +# INCLUDE_DIRECTORIES that sets all the include paths for ITK, otherwise +# if GDCM was build with VTK support, including it will bring the VTK +# include paths as well, and the wrong DICOMParser will be picked. + +OPTION(ITK_USE_SYSTEM_GDCM "Use an outside build of GDCM." OFF) +MARK_AS_ADVANCED(ITK_USE_SYSTEM_GDCM) +IF(ITK_USE_SYSTEM_GDCM) + FIND_PACKAGE(GDCM) + IF(GDCM_FOUND) + INCLUDE(${GDCM_USE_FILE}) + SET(ITK_GDCM_LIBRARIES gdcm) + ELSE(GDCM_FOUND) + MESSAGE(FATAL_ERROR "Must set GDCM_DIR for ITK_USE_SYSTEM_GDCM.") + ENDIF(GDCM_FOUND) +ELSE(ITK_USE_SYSTEM_GDCM) + SET(ITK_GDCM_LIBRARIES itkgdcm) + SET(GDCM_INCLUDE_DIR + ${ITK_SOURCE_DIR}/Utilities/gdcm/src + ) +ENDIF(ITK_USE_SYSTEM_GDCM) + +#----------------------------------------------------------------------------- +# Help other projects use ITK. + +# Copy the UseITK.cmake file to the binary tree for backward compatability. +CONFIGURE_FILE(${ITK_SOURCE_DIR}/UseITK.cmake.in + ${ITK_BINARY_DIR}/UseITK.cmake COPYONLY IMMEDIATE) + +# Save the compiler settings so another project can import them. +INCLUDE(${CMAKE_ROOT}/Modules/CMakeExportBuildSettings.cmake) +CMAKE_EXPORT_BUILD_SETTINGS(${ITK_BINARY_DIR}/ITKBuildSettings.cmake) + +# Save library dependencies. +EXPORT_LIBRARY_DEPENDENCIES(${ITK_BINARY_DIR}/ITKLibraryDepends.cmake) + +# Create the ITKConfig.cmake file containing the ITK configuration. +INCLUDE (${ITK_SOURCE_DIR}/itkGenerateITKConfig.cmake) + +IF(NOT ITK_INSTALL_NO_DEVELOPMENT) + INSTALL(FILES + ${ITK_BINARY_DIR}/ITKBuildSettings.cmake + ${ITK_BINARY_DIR}/ITKLibraryDepends.cmake + ${ITK_BINARY_DIR}/UseITK.cmake + DESTINATION ${ITK_INSTALL_PACKAGE_DIR_CM24} + COMPONENT Development + ) +ENDIF(NOT ITK_INSTALL_NO_DEVELOPMENT) -- GitLab