Mercurial > hg > minc-tools
view CMakeLists.txt @ 2654:97fcc320deb3
removing ITK suport into a separate project
author | Vladimir S. FONOV <vladimir.fonov@gmail.com> |
---|---|
date | Thu, 22 Mar 2012 17:00:25 -0400 |
parents | 862428fcdbce |
children | 584b0bdfa619 |
line wrap: on
line source
# CMakeFiles.txt for the MINC2 library # # Andrew Janke - a.janke@gmail.com # Vladimir S. FONOV - vladimir.fonov@gmail.com PROJECT(minc2) SET(MINC2_PACKAGE_VERSION_MAJOR 2) SET(MINC2_PACKAGE_VERSION_MINOR 1) SET(MINC2_PACKAGE_VERSION_PATCH 20) SET(PACKAGE "minc2") SET(PACKAGE_BUGREPORT "a.janke@gmail.com") SET(PACKAGE_NAME "minc2") SET(PACKAGE_VERSION "${MINC2_PACKAGE_VERSION_MAJOR}.${MINC2_PACKAGE_VERSION_MINOR}.${MINC2_PACKAGE_VERSION_PATCH}") SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") CMAKE_MINIMUM_REQUIRED(VERSION 2.6) IF(NOT MINC_TOOLKIT_BUILD) SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules") ENABLE_TESTING() INCLUDE(CTest) SET(CPACK_GENERATOR TGZ) SET(CPACK_PACKAGE_VERSION_MAJOR ${MINC2_PACKAGE_VERSION_MAJOR}) SET(CPACK_PACKAGE_VERSION_MINOR ${MINC2_PACKAGE_VERSION_MINOR}) SET(CPACK_PACKAGE_VERSION_PATCH ${MINC2_PACKAGE_VERSION_PATCH}) INCLUDE(CPack) ENDIF(NOT MINC_TOOLKIT_BUILD) #ADD_SUBDIRECTORY( doc ) OPTION(MINC2_BUILD_V2 "Support minc2 file format" ON) OPTION(MINC2_BUILD_TOOLS "Build minc tools (mincreshape,mincresample, etc)" ON) OPTION(MINC2_BUILD_CONVERTERS "Build minc conversion programs (mnc2nii, nii2mnc , dcm2mnc...)" ON) OPTION(MINC2_BUILD_EZMINC "Build C++ interface library EZminc" ON) OPTION(MINC2_BUILD_SHARED_LIBS "Build minc2 with shared libraries." OFF) IF(MINC2_BUILD_V2 AND NOT MINC_TOOLKIT_BUILD) IF(ITK_FOUND AND ITK_VERSION_MAJOR VERSION_EQUAL 4) # check if using ITK HDF5 library IF(ITKHDF5_LOADED) SET(USE_ITK_HDF5 ON) ELSE(ITKHDF5_LOADED) SET(USE_ITK_HDF5 OFF) ENDIF(ITKHDF5_LOADED) ELSE(ITK_FOUND AND ITK_VERSION_MAJOR VERSION_EQUAL 4) # check if using ITK HDF5 library SET(USE_ITK_HDF5 OFF) IF(ENABLE_SUPERBUILD) OPTION(USE_SYSTEM_HDF5 "Use System HDF5 > 1.8" ON) ELSE(ENABLE_SUPERBUILD) SET(USE_SYSTEM_HDF5 ON) ENDIF(ENABLE_SUPERBUILD) ENDIF(ITK_FOUND AND ITK_VERSION_MAJOR VERSION_EQUAL 4) # check if using ITK HDF5 library ENDIF(BUILD_MINC2 AND NOT MINC_TOOLKIT_BUILD) IF(BUILD_SHARED_LIBS) SET(LIBRARY_TYPE SHARED) SET(LIBRARY_INSTALL LIBRARY) ELSE(BUILD_SHARED_LIBS) SET(LIBRARY_TYPE STATIC) SET(LIBRARY_INSTALL ARCHIVE) ENDIF(BUILD_SHARED_LIBS) # external packages IF(NOT MINC_TOOLKIT_BUILD) FIND_PACKAGE(NETCDF REQUIRED) ENDIF(NOT MINC_TOOLKIT_BUILD) IF(MINC2_BUILD_V2 AND NOT MINC_TOOLKIT_BUILD) IF(USE_ITK_HDF5) SET(HDF5_INCLUDE_DIR "${ITKHDF5_INCLUDE_DIRS}/itkhdf5") # a hack? SET(HDF5_LIBRARY ${ITKHDF5_LIBRARIES}) SET(ZLIB_LIBRARIES ${ITKZLIB_LIBRARIES}) ELSE(USE_ITK_HDF5) FIND_PACKAGE(ZLIB REQUIRED) FIND_PACKAGE(HDF5 REQUIRED) ENDIF(USE_ITK_HDF5) IF(ZLIB_FOUND) SET(HAVE_ZLIB 1) ELSE(ZLIB_FOUND) FIND_PACKAGE(ZLIB) IF(ZLIB_FOUND) SET(HAVE_ZLIB 1) ENDIF(ZLIB_FOUND) ENDIF(ZLIB_FOUND) ENDIF(MINC2_BUILD_V2 AND NOT MINC_TOOLKIT_BUILD) # add for building relocatable library IF(UNIX) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") ENDIF(UNIX) # check for prereqs INCLUDE(CheckFunctionExists) CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP) CHECK_FUNCTION_EXISTS(tmpnam HAVE_TMPNAM) CHECK_FUNCTION_EXISTS(tempnam HAVE_TEMPNAM) CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR) CHECK_FUNCTION_EXISTS(popen HAVE_POPEN) CHECK_FUNCTION_EXISTS(fork HAVE_WORKING_FORK) CHECK_FUNCTION_EXISTS(vfork HAVE_WORKING_VFORK) CHECK_FUNCTION_EXISTS(fdopen HAVE_FDOPEN) CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP) CHECK_FUNCTION_EXISTS(getpwnam HAVE_GETPWNAM) CHECK_FUNCTION_EXISTS(select HAVE_SELECT) CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR) CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) CHECK_FUNCTION_EXISTS(system HAVE_SYSTEM) INCLUDE(CheckIncludeFiles) CHECK_INCLUDE_FILES(float.h HAVE_FLOAT_H) CHECK_INCLUDE_FILES(sys/dir.h HAVE_SYS_DIR_H) CHECK_INCLUDE_FILES(sys/ndir.h HAVE_SYS_NDIR_H) CHECK_INCLUDE_FILES(sys/stat.h HAVE_SYS_STAT_H) CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H) CHECK_INCLUDE_FILES(sys/wait.h HAVE_SYS_WAIT_H) CHECK_INCLUDE_FILES(values.h HAVE_VALUES_H) CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H) CHECK_INCLUDE_FILES(dirent.h HAVE_DIRENT_H) CHECK_INCLUDE_FILES(memory.h HAVE_MEMORY_H) CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H) CHECK_INCLUDE_FILES(fcntl.h HAVE_FCNTL_H) CHECK_INCLUDE_FILES(dlfcn.h HAVE_DLFCN_H) CHECK_INCLUDE_FILES(vfork.h HAVE_VFORK_H) CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H) CHECK_INCLUDE_FILES(string.h HAVE_STRING_H) CHECK_INCLUDE_FILES(strings.h HAVE_STRINGS_H) CHECK_INCLUDE_FILES(pwd.h HAVE_PWD_H) ADD_DEFINITIONS(-DHAVE_CONFIG_H) # aliases SET(VERSION "${PACKAGE_VERSION}") IF(MINC2_BUILD_EZMINC) set(MINC2_INCLUDE_DIRS_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/ezminc ) INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/ezminc ) ENDIF(MINC2_BUILD_EZMINC) # netcdf and HDF5 IF(MINC2_BUILD_V2) FIND_PACKAGE(ZLIB REQUIRED) SET(MINC2 "1") ELSE(BUILD_MINC2) SET(MINC2 "0") ENDIF(MINC2_BUILD_V2) # config files for build CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY) # others CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/epm-header.in ${CMAKE_CURRENT_BINARY_DIR}/epm-header) # set the master INCLUDE directories INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libsrc ${CMAKE_CURRENT_SOURCE_DIR}/volume_io/Include ) INCLUDE_DIRECTORIES( ${NETCDF_INCLUDE_DIR} ) IF(MINC2_BUILD_V2) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libsrc2 ) ENDIF(MINC2_BUILD_V2) # some variables SET(minc1_LIB_SRCS libsrc/ParseArgv.c libsrc/dim_conversion.c libsrc/image_conversion.c libsrc/minc_convenience.c libsrc/minc_error.c libsrc/nd_loop.c libsrc/netcdf_convenience.c libsrc/time_stamp.c libsrc/value_conversion.c libsrc/voxel_loop.c libsrc/hdf_convenience.c libsrc/minc_compat.c libsrc/minc_simple.c libsrc/read_file_names.c ) SET(minc1_HEADERS libsrc/minc.h libsrc/ParseArgv.h libsrc/voxel_loop.h libsrc/nd_loop.h libsrc/time_stamp.h libsrc/minc_compat.h volume_io/Include/volume_io.h libsrc/minc_simple.h ) SET(minc2_LIB_SRCS libsrc2/convert.c libsrc2/datatype.c libsrc2/dimension.c libsrc2/free.c libsrc2/grpattr.c libsrc2/hyper.c libsrc2/label.c libsrc2/m2util.c libsrc2/record.c libsrc2/slice.c libsrc2/valid.c libsrc2/volprops.c libsrc2/volume.c ) SET(minc2_HEADERS libsrc2/minc2.h ) # volume_io2 SET(volume_io_LIB_SRCS volume_io/Geometry/colour.c volume_io/Geometry/colour_def.c volume_io/Geometry/gaussian.c volume_io/Geometry/inverse.c volume_io/Geometry/newton.c volume_io/Geometry/points.c volume_io/Geometry/splines.c volume_io/Geometry/tensors.c volume_io/Geometry/transforms.c volume_io/MNI_formats/gen_xf_io.c volume_io/MNI_formats/gen_xfs.c volume_io/MNI_formats/grid_transforms.c volume_io/MNI_formats/mni_io.c volume_io/MNI_formats/tag_points.c volume_io/MNI_formats/thin_plate_spline.c volume_io/Prog_utils/alloc.c volume_io/Prog_utils/alloc_check.c volume_io/Prog_utils/arrays.c volume_io/Prog_utils/files.c volume_io/Prog_utils/print.c volume_io/Prog_utils/progress.c volume_io/Prog_utils/string.c volume_io/Prog_utils/time.c volume_io/Volumes/evaluate.c volume_io/Volumes/get_hyperslab.c volume_io/Volumes/input_free.c volume_io/Volumes/input_mnc.c volume_io/Volumes/input_volume.c volume_io/Volumes/multidim_arrays.c volume_io/Volumes/output_mnc.c volume_io/Volumes/output_volume.c volume_io/Volumes/set_hyperslab.c volume_io/Volumes/volume_cache.c volume_io/Volumes/volumes.c ) SET(volume_io_HEADERS volume_io/Include/volume_io/alloc.h volume_io/Include/volume_io/arrays.h volume_io/Include/volume_io/basic.h volume_io/Include/volume_io/def_math.h volume_io/Include/volume_io/files.h volume_io/Include/volume_io/geom_structs.h volume_io/Include/volume_io/geometry.h volume_io/Include/internal_volume_io.h volume_io/Include/volume_io/multidim.h volume_io/Include/volume_io/progress.h volume_io/Include/volume_io/string_funcs.h volume_io/Include/volume_io/system_dependent.h volume_io/Include/volume_io/transforms.h volume_io/Include/volume_io/vol_io_prototypes.h volume_io/Include/volume_io/volume.h volume_io/Include/volume_io/volume_cache.h ) SET(MINC2_LIBRARY minc) SET(VOLUME_IO_LIBRARY volume_io) SET(MINC2_LIBRARIES ${MINC2_LIBRARY} ${NETCDF_LIBRARY}) SET(MINC2_DEPENDENCIES "") # IF(NOT USE_SYSTEM_NETCDF) # SET(MINC2_DEPENDENCIES ${MINC2_DEPENDENCIES} NETCDF) # ENDIF(NOT USE_SYSTEM_NETCDF) IF(MINC2_BUILD_V2) INCLUDE_DIRECTORIES( ${HDF5_INCLUDE_DIR} ) SET(minc_LIB_SRCS ${minc1_LIB_SRCS} ${minc2_LIB_SRCS}) SET(minc_HEADERS ${minc1_HEADERS} ${minc2_HEADERS}) SET(MINC2_LIBRARY minc2) SET(MINC2_LIBRARIES ${MINC2_LIBRARY} ${HDF5_LIBRARY} ${NETCDF_LIBRARY} ${ZLIB_LIBRARIES} m ) SET(VOLUME_IO_LIBRARY volume_io2) IF(NOT USE_SYSTEM_HDF5) SET(MINC2_DEPENDENCIES ${MINC2_DEPENDENCIES} HDF5) ENDIF(NOT USE_SYSTEM_HDF5) ELSE(MINC2_BUILD_V2) SET(minc_LIB_SRCS ${minc1_LIB_SRCS} ) SET(minc_HEADERS ${minc1_HEADERS} ${minc2_HEADERS}) ENDIF(MINC2_BUILD_V2) ADD_LIBRARY(${MINC2_LIBRARY} ${LIBRARY_TYPE} ${minc_LIB_SRCS} ) TARGET_LINK_LIBRARIES(${MINC2_LIBRARY} ${NETCDF_LIBRARY} ${HDF5_LIBRARY} ${ZLIB_LIBRARIES} m ) ADD_LIBRARY(${VOLUME_IO_LIBRARY} ${LIBRARY_TYPE} ${volume_io_LIB_SRCS}) SET_TARGET_PROPERTIES(${MINC2_LIBRARY} PROPERTIES VERSION ${PACKAGE_VERSION} SOVERSION ${MINC2_PACKAGE_VERSION_MAJOR}) SET_TARGET_PROPERTIES(${VOLUME_IO_LIBRARY} PROPERTIES VERSION ${PACKAGE_VERSION} SOVERSION ${MINC2_PACKAGE_VERSION_MAJOR}) ADD_DEPENDENCIES(${MINC2_LIBRARY} ${MINC2_DEPENDENCIES}) ADD_DEPENDENCIES(${VOLUME_IO_LIBRARY} ${MINC2_LIBRARY}) INSTALL(TARGETS ${MINC2_LIBRARY} ${LIBRARY_INSTALL} DESTINATION lib) INSTALL(TARGETS ${VOLUME_IO_LIBRARY} ${LIBRARY_INSTALL} DESTINATION lib) INSTALL(FILES ${minc2_HEADERS} DESTINATION include ) INSTALL(FILES ${volume_io_HEADERS} DESTINATION include/volume_io) IF(MINC2_BUILD_TOOLS) ADD_SUBDIRECTORY( progs ) ENDIF(BUILD_TOOLS) IF(MINC2_BUILD_CONVERTERS) ADD_SUBDIRECTORY( conversion ) ENDIF(BUILD_CONVERTERS) IF(MINC2_BUILD_EZMINC) ADD_SUBDIRECTORY( ezminc ) ENDIF(BUILD_EZMINC) # config for the build directory set(MINC2_USE_FILE_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/UseMINC2.cmake) set(MINC2_INCLUDE_DIRS_CONFIG ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libsrc ${CMAKE_CURRENT_SOURCE_DIR}/volume_io/Include ) IF(MINC2_BUILD_V2) set(MINC2_INCLUDE_DIRS_CONFIG ${MINC2_INCLUDE_DIRS_CONFIG} ${CMAKE_CURRENT_SOURCE_DIR}/libsrc2 ) ENDIF(MINC2_BUILD_V2) IF(MINC2_BUILD_EZMINC) SET(EZMINC_LIBRARIES minc_io ${MINC2_LIBRARIES}) ENDIF(MINC2_BUILD_EZMINC) set(MINC2_LIBRARY_DIRS_CONFIG ${CMAKE_CURRENT_BINARY_DIR}) configure_file(MINC2Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/MINC2Config.cmake @ONLY ) configure_file(UseMINC2.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/UseMINC2.cmake @ONLY) # config for install dir set(MINC2_USE_FILE_CONFIG "${CMAKE_INSTALL_PREFIX}/lib/UseMINC2.cmake") set(MINC2_INCLUDE_DIRS_CONFIG ${CMAKE_INSTALL_PREFIX}/include ) set(MINC2_LIBRARY_DIRS_CONFIG ${CMAKE_INSTALL_PREFIX}/lib) configure_file(MINC2Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MINC2Config.cmake @ONLY ) configure_file(UseMINC2.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/UseMINC2.cmake @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/UseMINC2.cmake ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MINC2Config.cmake DESTINATION lib COMPONENT Development) # testing IF(BUILD_TESTING) ADD_SUBDIRECTORY( testdir ) ENDIF(BUILD_TESTING)