X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=CMakeLists.txt;h=4546410e822684ec5ef25324df3b02e33fa52c50;hb=dbb25a7b734864a11ba84a5089f7b5e647099f0a;hp=23ba5c0801014654093015683694f01d48d7ce99;hpb=8e96226a1bf3582551e74a05d3df037d46fde4e4;p=gdcm.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 23ba5c08..4546410e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,10 @@ PROJECT(GDCM) -CMAKE_MINIMUM_REQUIRED(VERSION 1.8) +CMAKE_MINIMUM_REQUIRED(VERSION 2.0) #----------------------------------------------------------------------------- # GDCM version number, usefull for packaging and doxygen doc: -SET(GDCM_MAJOR_VERSION 0) -SET(GDCM_MINOR_VERSION 7) +SET(GDCM_MAJOR_VERSION 1) +SET(GDCM_MINOR_VERSION 0) SET(GDCM_BUILD_VERSION 0) SET(GDCM_VERSION "${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}") @@ -17,7 +17,8 @@ MARK_AS_ADVANCED(GDCM_DATA_DIR) #----------------------------------------------------------------------------- # Build shared lib by default -OPTION(BUILD_SHARED_LIBS "Build GDCM with shared libraries." ON) +OPTION(GDCM_BUILD_SHARED_LIBS "Build GDCM with shared libraries." ON) +SET(BUILD_SHARED_LIBS ${GDCM_BUILD_SHARED_LIBS}) OPTION(GDCM_DEBUG "Turn verbosity of some statement ON." OFF) MARK_AS_ADVANCED(GDCM_DEBUG) @@ -27,6 +28,84 @@ SET (EXECUTABLE_OUTPUT_PATH ${GDCM_BINARY_DIR}/bin CACHE PATH "Single output dir 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) +#----------------------------------------------------------------------------- +# Help outside projects link against gdcm + +EXPORT_LIBRARY_DEPENDENCIES(${GDCM_BINARY_DIR}/GDCMLibraryDepends.cmake) + +# For GDCM from build tree: +SET(GDCM_USE_FILE ${GDCM_SOURCE_DIR}/GDCMUse.cmake) +SET(GDCM_INCLUDE_DIRS + ${GDCM_BINARY_DIR}/src + ) +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) + +# 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__ +IF("GDCM_COMPILER_HAS_FUNCTION" MATCHES "^GDCM_COMPILER_HAS_FUNCTION$") + MESSAGE(STATUS "Checking support for __FUNCTION__ in compiler") + TRY_COMPILE(GDCM_COMPILER_HAS_FUNCTION + ${GDCM_BINARY_DIR}/CMakeTmp/Function + ${GDCM_SOURCE_DIR}/CMake/gdcmTestFUNCTION.cxx + OUTPUT_VARIABLE OUTPUT) + IF(GDCM_COMPILER_HAS_FUNCTION) + MESSAGE(STATUS "Checking support for __FUNCTION__ -- yes") + SET(GDCM_COMPILER_HAS_FUNCTION 1 CACHE INTERNAL "Support for extension C __FUNCTION__") + WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log + "Determining if the C compiler supports __FUNCTION__ " + "passed with the following output:\n" + "${OUTPUT}\n" APPEND) + ELSE(GDCM_COMPILER_HAS_FUNCTION) + MESSAGE(STATUS "Checking support for __FUNCTION__ -- no") + SET(GDCM_COMPILER_HAS_FUNCTION 0 CACHE INTERNAL "Support for extension C __FUNCTION__") + WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log + "Determining if the C compiler supports __FUNCTION__ " + "failed with the following output:\n" + "${OUTPUT}\n" APPEND) + ENDIF(GDCM_COMPILER_HAS_FUNCTION) +ENDIF("GDCM_COMPILER_HAS_FUNCTION" MATCHES "^GDCM_COMPILER_HAS_FUNCTION$") + +#----------------------------------------------------------------------------- +# Test if os defines a lenght for sockaddr +IF("HAVE_SA_LEN" MATCHES "^HAVE_SA_LEN$") + STRING(ASCII 35 POUND) + FILE(WRITE ${GDCM_BINARY_DIR}/CMakeTmp/gdcmTestHAVESALEN.c + "${POUND}include \n" + "${POUND}include \n" + "int main() { struct sockaddr sa; sa.sa_len = 0; }") + MESSAGE(STATUS "Checking if ifreq has a sa_len") + TRY_COMPILE(HAVE_SA_LEN + ${GDCM_BINARY_DIR} + ${GDCM_BINARY_DIR}/CMakeTmp/gdcmTestHAVESALEN.c + OUTPUT_VARIABLE OUTPUT) + IF(HAVE_SA_LEN) + MESSAGE(STATUS "Checking if ifreq has a sa_len -- yes") + SET(HAVE_SA_LEN 1 CACHE INTERNAL "Support if ifreq has a sa_len") + WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log + "Determining if ifreq has a sa_len" + "passed with the following output:\n" + "${OUTPUT}\n" APPEND) + ELSE(HAVE_SA_LEN) + MESSAGE(STATUS "Checking if ifreq has a sa_len -- no") + SET(HAVE_SA_LEN 0 CACHE INTERNAL "Support if ifreq has a sa_len") + WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log + "Determining if ifreq has a sa_len" + "failed with the following output:\n" + "${OUTPUT}\n" APPEND) + ENDIF(HAVE_SA_LEN) +ENDIF("HAVE_SA_LEN" MATCHES "^HAVE_SA_LEN$") + #----------------------------------------------------------------------------- # Build directory on which many applications depend SUBDIRS( @@ -62,7 +141,34 @@ INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake) TEST_BIG_ENDIAN(GDCM_WORDS_BIGENDIAN) INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) -CHECK_INCLUDE_FILE("stdint.h" GDCM_HAVE_STDINT_H) +CHECK_INCLUDE_FILE("stdint.h" CMAKE_HAVE_STDINT_H) +CHECK_INCLUDE_FILE("inttypes.h" CMAKE_HAVE_INTTYPES_H) + +# Check if header file exists and add it to the list. +INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFiles.cmake) +MACRO(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE) + CHECK_INCLUDE_FILES("${GDCM_INCLUDES};${FILE}" ${VARIABLE}) + IF(${VARIABLE}) + SET(GDCM_INCLUDES ${GDCM_INCLUDES} ${FILE}) + ENDIF(${VARIABLE}) +ENDMACRO(CHECK_INCLUDE_FILE_CONCAT) + +# Need those header for GetMacAddress in Util +# This is tricky as you need to figure out the proper order to +# test the inclusion of files +CHECK_INCLUDE_FILE_CONCAT("unistd.h" CMAKE_HAVE_UNISTD_H) +CHECK_INCLUDE_FILE_CONCAT("stdlib.h" CMAKE_HAVE_STDLIB_H) +CHECK_INCLUDE_FILE_CONCAT("sys/ioctl.h" CMAKE_HAVE_SYS_IOCTL_H) +CHECK_INCLUDE_FILE_CONCAT("sys/socket.h" CMAKE_HAVE_SYS_SOCKET_H) +CHECK_INCLUDE_FILE_CONCAT("sys/sockio.h" CMAKE_HAVE_SYS_SOCKIO_H) +CHECK_INCLUDE_FILE_CONCAT("net/if.h" CMAKE_HAVE_NET_IF_H) +CHECK_INCLUDE_FILE_CONCAT("netinet/in.h" CMAKE_HAVE_NETINET_IN_H) +CHECK_INCLUDE_FILE_CONCAT("net/if_dl.h" CMAKE_HAVE_NET_IF_DL_H) +CHECK_INCLUDE_FILE_CONCAT("net/if_arp.h" CMAKE_HAVE_NET_IF_ARP_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) CONFIGURE_FILE(${GDCM_SOURCE_DIR}/gdcmConfigure.h.in ${GDCM_BINARY_DIR}/gdcmConfigure.h @ONLY IMMEDIATE) @@ -77,7 +183,7 @@ IF(BUILD_TESTING) ENABLE_TESTING() INCLUDE (${CMAKE_ROOT}/Modules/Dart.cmake) MARK_AS_ADVANCED(DART_ROOT) - SUBDIRS(Test) + SUBDIRS(Testing) ENDIF(BUILD_TESTING)