X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=CMakeLists.txt;h=d988ba74e39e46cd9fc751e956e4422e4755ce93;hb=df1a3b45849af2e3d6ee4f616e5d5b88f3b4b5a6;hp=9e0aa193091a650abd9e0a0d8cb72fc5f11d43f9;hpb=3bb146cbeb1c778d5b35f39b5b18369296da0197;p=gdcm.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e0aa193..d988ba74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,62 +1,93 @@ PROJECT(GDCM) CMAKE_MINIMUM_REQUIRED(VERSION 2.0) # okay in fact you need at least cmake 2.0.4 to get swig working properly +# and you cannot use cmake 2.0.6 out of the box due to a bug (patched in debian package) #----------------------------------------------------------------------------- # GDCM version number, usefull for packaging and doxygen doc: SET(GDCM_MAJOR_VERSION 1) -SET(GDCM_MINOR_VERSION 0) -SET(GDCM_BUILD_VERSION 1) +SET(GDCM_MINOR_VERSION 3) +SET(GDCM_BUILD_VERSION 2) SET(GDCM_VERSION "${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}") #----------------------------------------------------------------------------- -# datadir in CMake: -SET(GDCM_DATA_DIR "/share/gdcm/" CACHE INTERNAL - "Install location for data (relative to prefix).") -MARK_AS_ADVANCED(GDCM_DATA_DIR) +# Provide compatibility options. +OPTION(GDCM_LEGACY_REMOVE "Remove all legacy code completely." OFF) +OPTION(GDCM_LEGACY_SILENT "Silence all legacy code messages." OFF) +MARK_AS_ADVANCED(GDCM_LEGACY_REMOVE GDCM_LEGACY_SILENT) #----------------------------------------------------------------------------- # Build shared lib by default -OPTION(GDCM_BUILD_SHARED_LIBS "Build GDCM with shared libraries." ON) -SET(BUILD_SHARED_LIBS ${GDCM_BUILD_SHARED_LIBS}) +OPTION(BUILD_SHARED_LIBS "Build GDCM with shared libraries." ON) + +SET(GDCM_CMAKE_DIR "${GDCM_SOURCE_DIR}/Utilities/CMake") +SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${GDCM_CMAKE_DIR}") + +SET(GDCM_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES}) OPTION(GDCM_DEBUG "Turn verbosity of some statement ON." OFF) MARK_AS_ADVANCED(GDCM_DEBUG) -#----------------------------------------------------------------------------- -SET (EXECUTABLE_OUTPUT_PATH ${GDCM_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.") -SET (LIBRARY_OUTPUT_PATH ${GDCM_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.") -MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH) +# -------------------------------------------------------------------------- +SET (GDCM_NAME_SPACE gdcm CACHE STRING "name space") -#----------------------------------------------------------------------------- -# Help outside projects link against gdcm +# -------------------------------------------------------------------------- +# Install directories +STRING(TOLOWER ${PROJECT_NAME} project_name) + +IF(NOT GDCM_INSTALL_BIN_DIR) + SET(GDCM_INSTALL_BIN_DIR "/bin") +ENDIF(NOT GDCM_INSTALL_BIN_DIR) + +IF(NOT GDCM_INSTALL_LIB_DIR) + SET(GDCM_INSTALL_LIB_DIR "/lib/${project_name}") +ENDIF(NOT GDCM_INSTALL_LIB_DIR) + +IF(NOT GDCM_INSTALL_DATA_DIR) + SET(GDCM_INSTALL_DATA_DIR "/share/${project_name}") +ENDIF(NOT GDCM_INSTALL_DATA_DIR) + +IF(NOT GDCM_INSTALL_INCLUDE_DIR) + SET(GDCM_INSTALL_INCLUDE_DIR "/include/${project_name}") +ENDIF(NOT GDCM_INSTALL_INCLUDE_DIR) + +IF(NOT GDCM_INSTALL_PACKAGE_DIR) + SET(GDCM_INSTALL_PACKAGE_DIR ${GDCM_INSTALL_LIB_DIR}) +ENDIF(NOT GDCM_INSTALL_PACKAGE_DIR) -EXPORT_LIBRARY_DEPENDENCIES(${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake) +IF(NOT GDCM_VTK_INSTALL_PACKAGE_DIR) + SET(GDCM_VTK_INSTALL_PACKAGE_DIR ${VTK_INSTALL_PACKAGE_DIR}) +ENDIF(NOT GDCM_VTK_INSTALL_PACKAGE_DIR) -# Save the compiler settings so another project can import them. -INCLUDE(${CMAKE_ROOT}/Modules/CMakeExportBuildSettings.cmake) -CMAKE_EXPORT_BUILD_SETTINGS(${GDCM_BINARY_DIR}/GDCMBuildSettings.cmake) -#INSTALL_FILES(/lib/gdcm .cmake GDCMBuildSettings) +IF(NOT GDCM_INSTALL_NO_DEVELOPMENT) + SET(GDCM_INSTALL_NO_DEVELOPMENT 0) +ENDIF(NOT GDCM_INSTALL_NO_DEVELOPMENT) -# For GDCM from build tree: -SET(GDCM_USE_FILE ${GDCM_SOURCE_DIR}/GDCMUse.cmake) -SET(GDCM_INCLUDE_DIRS - ${GDCM_BINARY_DIR}/ #for gdcmConfigure.h - ${GDCM_SOURCE_DIR}/src #for main gdcm include - ) -SET(GDCM_LIBRARY_DIRS ${LIBRARY_OUTPUT_PATH}) -SET(GDCM_LIBRARY_DEPENDS_FILE ${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake) -CONFIGURE_FILE(${GDCM_SOURCE_DIR}/GDCMConfig.cmake.in - ${GDCM_BINARY_DIR}/GDCMConfig.cmake @ONLY IMMEDIATE) +IF(NOT GDCM_INSTALL_NO_RUNTIME) + SET(GDCM_INSTALL_NO_RUNTIME 0) +ENDIF(NOT GDCM_INSTALL_NO_RUNTIME) + +IF(NOT GDCM_INSTALL_NO_DOCUMENTATION) + SET(GDCM_INSTALL_NO_DOCUMENTATION 0) +ENDIF(NOT GDCM_INSTALL_NO_DOCUMENTATION) + +SET(GDCM_INSTALL_NO_LIBRARIES) +IF(GDCM_BUILD_SHARED_LIBS) + IF(GDCM_INSTALL_NO_RUNTIME AND GDCM_INSTALL_NO_DEVELOPMENT) + SET(GDCM_INSTALL_NO_LIBRARIES 1) + ENDIF(GDCM_INSTALL_NO_RUNTIME AND GDCM_INSTALL_NO_DEVELOPMENT) +ELSE(GDCM_BUILD_SHARED_LIBS) + IF(GDCM_INSTALL_NO_DEVELOPMENT) + SET(GDCM_INSTALL_NO_LIBRARIES 1) + ENDIF(GDCM_INSTALL_NO_DEVELOPMENT) +ENDIF(GDCM_BUILD_SHARED_LIBS) + +#----------------------------------------------------------------------------- +SET (EXECUTABLE_OUTPUT_PATH ${GDCM_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.") +SET (LIBRARY_OUTPUT_PATH ${GDCM_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.") +MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH) -# For installed GDCM: -SET(GDCM_USE_FILE ${CMAKE_INSTALL_PREFIX}/lib/GDCM-${GDCM_VERSION}/GDCMUse.cmake) -SET(GDCM_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include/GDCM-${GDCM_VERSION}) -SET(GDCM_LIBRARY_DIRS ${CMAKE_INSTALL_PREFIX}/lib/ExodusII-${GDCM_VERSION}) -SET(GDCM_LIBRARY_DEPENDS_FILE ${CMAKE_INSTALL_PREFIX}/lib/GDCM-${GDCM_VERSION}/GDCMLibraryDepends.cmake) -CONFIGURE_FILE(${GDCM_SOURCE_DIR}/GDCMConfig.cmake.in - ${GDCM_BINARY_DIR}/Utilities/GDCMConfig.cmake @ONLY IMMEDIATE) #----------------------------------------------------------------------------- # Test if compiler defines the pseudo-macro __FUNCTION__ @@ -83,6 +114,26 @@ IF("GDCM_COMPILER_HAS_FUNCTION" MATCHES "^GDCM_COMPILER_HAS_FUNCTION$") ENDIF(GDCM_COMPILER_HAS_FUNCTION) ENDIF("GDCM_COMPILER_HAS_FUNCTION" MATCHES "^GDCM_COMPILER_HAS_FUNCTION$") +#----------------------------------------------------------------------------- +# Test is compiler support istringstream +IF("GDCM_TEST_ISTRINGSTREAM" MATCHES "^GDCM_TEST_ISTRINGSTREAM$") + MESSAGE(STATUS "Checking istringstream") + TRY_RUN(GDCM_TEST_ISTRINGSTREAM GDCM_TEST_ISTRINGSTREAM_COMPILED + ${GDCM_BINARY_DIR}/CMakeTmp/ + ${GDCM_SOURCE_DIR}/CMake/gdcmTestIstringStream.cxx) + IF(GDCM_TEST_ISTRINGSTREAM_COMPILED) + IF(GDCM_TEST_ISTRINGSTREAM) + MESSAGE(STATUS "Checking istringstream works -- yes") + SET(GDCM_TEST_ISTRINGSTREAM 1 CACHE INTERNAL "Whether istringstream works.") + ELSE(GDCM_TEST_ISTRINGSTREAM) + MESSAGE(STATUS "Checking istringstream works -- no") + SET(GDCM_TEST_ISTRINGSTREAM 0 CACHE INTERNAL "Whether istringstream works.") + ENDIF(GDCM_TEST_ISTRINGSTREAM) + ELSE(GDCM_TEST_ISTRINGSTREAM_COMPILED) + MESSAGE(STATUS "Checking istringstream -- failed") + ENDIF(GDCM_TEST_ISTRINGSTREAM_COMPILED) +ENDIF("GDCM_TEST_ISTRINGSTREAM" MATCHES "^GDCM_TEST_ISTRINGSTREAM$") + #----------------------------------------------------------------------------- # Build directory on which many applications depend SUBDIRS( @@ -106,7 +157,6 @@ FIND_PATH(GDCM_DATA_ROOT gdcm-ACR-LibIDO.acr ) # Set the place for the public dictionary, must be set before gdcmConfigure.h -#SET( GDCM_PUB_DICT_PATH "${CMAKE_INSTALL_PREFIX}${GDCM_DATA_DIR}") FIND_PATH(GDCM_PUB_DICT_PATH dicomV3.dic ${GDCM_SOURCE_DIR}/Dicts $ENV{PUB_DICT_PATH} @@ -124,10 +174,13 @@ INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake) TEST_BIG_ENDIAN(GDCM_WORDS_BIGENDIAN) INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) +CHECK_INCLUDE_FILE("stdint.h" CMAKE_HAVE_STDINT_H) IF(UNIX) #Avoid polluting Win32 cmakecache - CHECK_INCLUDE_FILE("stdint.h" CMAKE_HAVE_STDINT_H) CHECK_INCLUDE_FILE("inttypes.h" CMAKE_HAVE_INTTYPES_H) ENDIF(UNIX) +# Special Time support, two convention: *NIX vs Win32 +CHECK_INCLUDE_FILE("sys/times.h" CMAKE_HAVE_SYS_TIMES_H) +CHECK_INCLUDE_FILE("sys/timeb.h" CMAKE_HAVE_SYS_TIMEB_H) # Check if header file exists and add it to the list. INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFiles.cmake) @@ -154,7 +207,7 @@ IF(UNIX) #Avoid polluting Win32 cmakecache ENDIF(UNIX) #----------------------------------------------------------------------------- -# Test if os defines a lenght for sockaddr +# Test if os defines a length for sockaddr # only doing the test when we have sys/socket IF( ${CMAKE_HAVE_SYS_SOCKET_H} ) IF("HAVE_SA_LEN" MATCHES "^HAVE_SA_LEN$") @@ -162,7 +215,7 @@ IF( ${CMAKE_HAVE_SYS_SOCKET_H} ) FILE(WRITE ${GDCM_BINARY_DIR}/CMakeTmp/gdcmTestHAVESALEN.c "${POUND}include \n" "${POUND}include \n" - "int main() { struct sockaddr sa; sa.sa_len = 0; }") + "int main() { struct sockaddr sa; sa.sa_len = 0; }\n") MESSAGE(STATUS "Checking if ifreq has a sa_len") TRY_COMPILE(HAVE_SA_LEN ${GDCM_BINARY_DIR} @@ -188,18 +241,23 @@ ENDIF( ${CMAKE_HAVE_SYS_SOCKET_H} ) #----------------------------------------------------------------------------- # Force Big Endian emulation on little endian: -OPTION(GDCM_FORCE_BIGENDIAN_EMULATION "Force Big Endian Emulation. Do use if you don't know what you are doing." OFF) +OPTION(GDCM_FORCE_BIGENDIAN_EMULATION "Force Big Endian Emulation. Don't use if you don't know what you are doing." OFF) CONFIGURE_FILE(${GDCM_SOURCE_DIR}/gdcmConfigure.h.in - ${GDCM_BINARY_DIR}/gdcmConfigure.h @ONLY IMMEDIATE) + ${GDCM_BINARY_DIR}/gdcmConfigure.h @ONLY IMMEDIATE + ) -INSTALL_FILES(/include .h gdcmConfigure.h) +IF(NOT GDCM_INSTALL_NO_DEVELOPMENT) + INSTALL_FILES(${GDCM_INSTALL_INCLUDE_DIR} FILES gdcmConfigure.h) +ENDIF(NOT GDCM_INSTALL_NO_DEVELOPMENT) #----------------------------------------------------------------------------- # Add the testing directories OPTION(BUILD_TESTING "Build testing." ON) IF(BUILD_TESTING) + CONFIGURE_FILE(${GDCM_SOURCE_DIR}/CMake/CTestCustom.ctest.in + ${GDCM_BINARY_DIR}/CMake/CTestCustom.ctest @ONLY) ENABLE_TESTING() INCLUDE (${CMAKE_ROOT}/Modules/Dart.cmake) MARK_AS_ADVANCED(DART_ROOT) @@ -253,3 +311,8 @@ IF(GDCM_INSTALLER) SUBDIRS(Builder) ENDIF(GDCM_INSTALLER) +# -------------------------------------------------------------------------- +# Configure the export configuration + +SUBDIRS(CMake) +