Mercurial > hg > minc-tools
changeset 2590:4089d520ca08
making a super build
author | Vladimir Fonov <vladimir.fonov@gmail.com> |
---|---|
date | Wed, 18 Jan 2012 02:58:47 -0500 |
parents | 118864ca6bd1 |
children | 7980090d445e |
files | CMakeLists.txt MINC2Config.cmake.in ezminc/CMakeLists.txt ezminc/examples/CMakeLists.txt minc4itk/CMakeLists.txt progs/CMakeLists.txt testdir/CMakeLists.txt volume_io/Volumes/input_mnc.c volume_io/Volumes/output_mnc.c |
diffstat | 9 files changed, 113 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,12 +4,14 @@ # Vladimir S. FONOV - vladimir.fonov@gmail.com CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +INCLUDE(ExternalProject) PROJECT(minc2) -SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake-modules") +#SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake-modules") +ENABLE_TESTING() +INCLUDE(CTest) -#ADD_SUBDIRECTORY( testdir ) #ADD_SUBDIRECTORY( doc ) @@ -33,10 +35,61 @@ OPTION(BUILD_CONVERTERS "Build minc conversion programs (mnc2nii, nii2mnc , dcm2mnc...)" ON) OPTION(BUILD_EZMINC "Build C++ interface library EZminc" ON) +OPTION(USE_SYSTEM_NETCDF "Use System NETCDF > 3.6.3" OFF) + IF(BUILD_EZMINC) OPTION(BUILD_MINC4ITK "Build ITK interface" ON) ENDIF(BUILD_EZMINC) +IF(BUILD_MINC2) + OPTION(USE_SYSTEM_HDF5 "Use System HDF5 > 1.8 " OFF) +ENDIF(BUILD_MINC2) + + + +# external packages +IF(USE_SYSTEM_NETCDF) + FIND_PACKAGE(NETCDF REQUIRED) + +ELSE(USE_SYSTEM_NETCDF) + ExternalProject_Add(NETCDF + SOURCE_DIR NETCDF + URL "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.0.1.tar.gz" + URL_MD5 a251453c5477599f050fa4e593295186 + BUILD_IN_SOURCE 1 + INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" + BUILD_COMMAND make + INSTALL_COMMAND make install + CONFIGURE_COMMAND ./configure --prefix=${CMAKE_INSTALL_PREFIX} --with-pic --disable-netcdf4 --disable-hdf4 --disable-dap --disable-shared --disable-cxx --disable-f77 --disable-f90 --disable-examples --enable-v2 --disable-docs + ) + + SET(NETCDF_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib/libnetcdf.a ) + SET(NETCDF_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include ) +ENDIF(USE_SYSTEM_NETCDF) + + +IF(BUILD_MINC2) + IF(USE_SYSTEM_HDF5 ) + FIND_PACKAGE(HDF5 REQUIRED) + ELSE(USE_SYSTEM_HDF5) + + ExternalProject_Add(HDF5 + SOURCE_DIR HDF5 + URL "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.7/src/hdf5-1.8.7.tar.gz" + URL_MD5 37711d4bcb72997e93d495f97c76c33a + BUILD_IN_SOURCE 1 + INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" + BUILD_COMMAND make + INSTALL_COMMAND make install + CONFIGURE_COMMAND ./configure --prefix=${CMAKE_INSTALL_PREFIX} --enable-production --with-pic --disable-shared --disable-cxx --disable-f77 --disable-f90 --disable-examples --disable-hl --disable-docs + ) + + SET(HDF5_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include ) + SET(HDF5_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib/libhdf5.a ) + + ENDIF(USE_SYSTEM_HDF5) +ENDIF(BUILD_MINC2) + ADD_DEFINITIONS(-DHAVE_CONFIG_H) @@ -73,31 +126,32 @@ ENDIF(BUILD_MINC4ITK AND BUILD_EZMINC) - # netcdf and HDF5 -FIND_PACKAGE(NETCDF REQUIRED) -INCLUDE_DIRECTORIES( ${NETCDF_INCLUDE_DIR} ) IF(BUILD_MINC2) - FIND_PACKAGE(HDF5 REQUIRED) FIND_PACKAGE(ZLIB REQUIRED) SET(MINC2 "1") - INCLUDE_DIRECTORIES( ${HDF5_INCLUDE_DIR} ) +ELSE(BUILD_MINC2) + SET(MINC2 "0") ENDIF(BUILD_MINC2) # config files for build -CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_SOURCE_DIR}/config.h) +CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/config.h) # others -CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/epm-header.in ${CMAKE_SOURCE_DIR}/epm-header) +CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/epm-header.in ${CMAKE_BINARY_DIR}/epm-header) + # set the master INCLUDE directories INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/libsrc ${CMAKE_SOURCE_DIR}/volume_io/Include ) +INCLUDE_DIRECTORIES( ${NETCDF_INCLUDE_DIR} ) + IF(BUILD_MINC2) INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/libsrc2 @@ -138,11 +192,17 @@ libsrc2/volume.c ) -SET(minc_LIB minc) +SET(MINC_LIBRARY minc) +SET(MINC_LIBS ${MINC_LIBRARY} ${NETCDF_LIBRARY}) IF(BUILD_MINC2) + INCLUDE_DIRECTORIES( ${HDF5_INCLUDE_DIR} ) + + SET(minc_LIB_SRCS ${minc1_LIB_SRCS} ${minc2_LIB_SRCS}) - SET(minc_LIB minc2) + SET(MINC_LIBRARY minc2) + SET(MINC_LIBS ${MINC_LIBRARY} ${NETCDF_LIBRARY} ${HDF5_LIBRARY} ${ZLIB_LIBRARIES} m ) + ADD_LIBRARY(minc2 STATIC ${minc_LIB_SRCS} ) TARGET_LINK_LIBRARIES(minc2 ${NETCDF_LIBRARY} ${HDF5_LIBRARY} ${ZLIB_LIBRARIES} m ) @@ -162,10 +222,13 @@ SET_TARGET_PROPERTIES(minc2 PROPERTIES VERSION ${PACKAGE_VERSION} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) + IF(NOT USE_SYSTEM_HDF5) + ADD_DEPENDENCIES(${MINC_LIBRARY} HDF5) + ENDIF(NOT USE_SYSTEM_HDF5) + ELSE(BUILD_MINC2) SET(minc_LIB_SRCS ${minc1_LIB_SRCS} ) - SET(minc_LIB minc) ADD_LIBRARY(minc STATIC ${minc1_LIB_SRCS} ) TARGET_LINK_LIBRARIES(minc ${NETCDF_LIBRARY} ) INSTALL(TARGETS minc ARCHIVE DESTINATION lib) @@ -181,8 +244,12 @@ ) SET_TARGET_PROPERTIES(minc PROPERTIES VERSION ${PACKAGE_VERSION} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) +ENDIF(BUILD_MINC2) -ENDIF(BUILD_MINC2) +IF(NOT USE_SYSTEM_NETCDF) + ADD_DEPENDENCIES(${MINC_LIBRARY} NETCDF) +ENDIF(NOT USE_SYSTEM_NETCDF) + # build the main minc2 library @@ -229,13 +296,15 @@ ADD_LIBRARY(volume_io2 STATIC ${volume_io_LIB_SRCS}) INSTALL(TARGETS volume_io2 ARCHIVE DESTINATION lib) SET_TARGET_PROPERTIES(volume_io2 PROPERTIES VERSION ${PACKAGE_VERSION} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) - SET( volume_io_LIB volume_io2) + SET( VOLUME_IO_LIB volume_io2) + ADD_DEPENDENCIES(volume_io2 ${MINC_LIBRARY}) ELSE(BUILD_MINC2) ADD_LIBRARY(volume_io STATIC ${volume_io_LIB_SRCS}) INSTALL(TARGETS volume_io ARCHIVE DESTINATION lib) SET_TARGET_PROPERTIES(volume_io PROPERTIES VERSION ${PACKAGE_VERSION} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) - SET( volume_io_LIB volume_io) + SET( VOLUME_IO_LIB volume_io) + ADD_DEPENDENCIES(volume_io ${MINC_LIBRARY}) ENDIF(BUILD_MINC2) INSTALL(FILES volume_io/Include/volume_io/alloc.h @@ -317,4 +386,11 @@ DESTINATION lib/MINC2 COMPONENT Development) -# config for the install directory +# testing + +IF(BUILD_TESTING) + ADD_SUBDIRECTORY( testdir ) +ENDIF(BUILD_TESTING) + + +
--- a/MINC2Config.cmake.in +++ b/MINC2Config.cmake.in @@ -5,3 +5,4 @@ set(MINC2_INCLUDE_DIRS "@MINC2_INCLUDE_DIRS_CONFIG@") set(MINC2_LIBRARY_DIRS "@MINC2_LIBRARY_DIRS_CONFIG@") set(MINC2_USE_FILE "@MINC2_USE_FILE_CONFIG@") +set(MINC2_LIBRARIES "@MINC_LIBS@")
--- a/ezminc/CMakeLists.txt +++ b/ezminc/CMakeLists.txt @@ -1,7 +1,5 @@ OPTION(BUILD_EZMINC_EXAMPLES "Build EZminc examples" ON) - - IF(BUILD_MINC2) ADD_DEFINITIONS( -DMINC2 ) ENDIF(BUILD_MINC2) @@ -24,7 +22,7 @@ ADD_LIBRARY( minc_io ${MINC_IO_HEADERS} ${MINC_IO_SRC}) -TARGET_LINK_LIBRARIES(minc_io ${minc_LIB}) +TARGET_LINK_LIBRARIES(minc_io ${MINC_LIBS}) INSTALL(TARGETS minc_io ARCHIVE DESTINATION lib) INSTALL(FILES ${MINC_IO_HEADERS} DESTINATION include)
--- a/ezminc/examples/CMakeLists.txt +++ b/ezminc/examples/CMakeLists.txt @@ -7,7 +7,7 @@ ADD_EXECUTABLE(volume_similarity volume_similarity.cpp) INSTALL(TARGETS - fuzzy_volume_similarity - volume_similarity + fuzzy_volume_similarity + volume_similarity DESTINATION bin)
--- a/minc4itk/CMakeLists.txt +++ b/minc4itk/CMakeLists.txt @@ -37,8 +37,8 @@ ${ITK_LIBRARIES} itkvnl_algo itkvnl - ${minc_LIB} - ${volume_io_LIB} + ${MINC_LIBS} + ${VOLUME_IO_LIB} m z )
--- a/progs/CMakeLists.txt +++ b/progs/CMakeLists.txt @@ -7,7 +7,7 @@ #LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/..) INCLUDE_DIRECTORIES(Proglib) -LINK_LIBRARIES( ${minc_LIB} ) +LINK_LIBRARIES( ${MINC_LIBS} ) ADD_DEFINITIONS(-DHAVE_CONFIG_H) #SET(BISON_FIND_REQUIRED) @@ -85,7 +85,7 @@ ADD_EXECUTABLE(mincresample mincresample/mincresample.c mincresample/resample_volumes.c Proglib/convert_origin_to_start.c) -TARGET_LINK_LIBRARIES(mincresample ${volume_io_LIB} ${minc_LIB}) +TARGET_LINK_LIBRARIES(mincresample ${VOLUME_IO_LIB} ${MINC_LIBS}) ADD_EXECUTABLE(mincreshape mincreshape/mincreshape.c mincreshape/copy_data.c) @@ -98,20 +98,20 @@ Proglib/convert_origin_to_start.c) ADD_EXECUTABLE(voxeltoworld coordinates/voxeltoworld.c) -TARGET_LINK_LIBRARIES(voxeltoworld ${volume_io_LIB} ${minc_LIB}) +TARGET_LINK_LIBRARIES(voxeltoworld ${VOLUME_IO_LIB} ${MINC_LIBS}) ADD_EXECUTABLE(worldtovoxel coordinates/worldtovoxel.c) -TARGET_LINK_LIBRARIES(worldtovoxel ${volume_io_LIB} ${minc_LIB}) +TARGET_LINK_LIBRARIES(worldtovoxel ${VOLUME_IO_LIB} ${MINC_LIBS}) ADD_EXECUTABLE(transformtags xfm/transformtags.c) -TARGET_LINK_LIBRARIES(transformtags ${volume_io_LIB} ${minc_LIB}) +TARGET_LINK_LIBRARIES(transformtags ${VOLUME_IO_LIB} ${MINC_LIBS}) ADD_EXECUTABLE(xfmconcat xfm/xfmconcat.c) -TARGET_LINK_LIBRARIES(xfmconcat ${volume_io_LIB} ${minc_LIB}) +TARGET_LINK_LIBRARIES(xfmconcat ${VOLUME_IO_LIB} ${MINC_LIBS}) ADD_EXECUTABLE(xfminvert xfm/xfminvert.c) -TARGET_LINK_LIBRARIES(xfminvert ${volume_io_LIB} ${minc_LIB}) +TARGET_LINK_LIBRARIES(xfminvert ${VOLUME_IO_LIB} ${MINC_LIBS}) # install progs INSTALL(TARGETS
--- a/testdir/CMakeLists.txt +++ b/testdir/CMakeLists.txt @@ -1,8 +1,9 @@ -LINK_LIBRARIES( ${minc_LIB} ) +LINK_LIBRARIES( ${MINC_LIBS} ) -ADD_EXECUTABLE(minc minc.c) +ADD_EXECUTABLE(minc_tst minc.c) ADD_EXECUTABLE(icv icv.c) + ADD_EXECUTABLE(icv_dim1 icv_dim1.c) ADD_EXECUTABLE(icv_dim icv_dim.c) ADD_EXECUTABLE(icv_fillvalue icv_fillvalue.c) @@ -15,7 +16,7 @@ ADD_EXECUTABLE(test_xfm test_xfm.c) ADD_EXECUTABLE(create_grid_xfm create_grid_xfm.c) -TARGET_LINK_LIBRARIES(create_grid_xfm ${volume_io_LIB} ${minc_LIB}) +TARGET_LINK_LIBRARIES(create_grid_xfm ${VOLUME_IO_LIB} ${MINC_LIBS}) MACRO(minc_test cmd) # minc 1 version @@ -36,7 +37,7 @@ add_test(arg_parse ${CMAKE_CURRENT_SOURCE_DIR}/run_test_arg_parse_cmake.sh ${CMAKE_CURRENT_BINARY_DIR}/test_arg_parse) add_test(icv icv) -add_test(minc minc) +add_test(minc minc_tst) add_test(mincapi mincapi) add_test(test_arg_parse test_arg_parse) @@ -47,4 +48,4 @@ #add_test(test_speed test_speed) #add_test(test_xfm test_xfm) -TARGET_LINK_LIBRARIES(test_xfm ${volume_io_LIB} ${minc_LIB}) +TARGET_LINK_LIBRARIES(test_xfm ${VOLUME_IO_LIB} ${MINC_LIBS})
--- a/volume_io/Volumes/input_mnc.c +++ b/volume_io/Volumes/input_mnc.c @@ -598,7 +598,7 @@ file->n_slab_dims++; /* integral number of complete dimensions */ } else { slab_size *= MIN( file->sizes_in_file[d], - (hsize_t)( MI_MAX_VAR_BUFFER_SIZE / ( slab_size * unit_size ) ) ); + (size_t)( MI_MAX_VAR_BUFFER_SIZE / ( slab_size * unit_size ) ) ); full_dim = 0; } }
--- a/volume_io/Volumes/output_mnc.c +++ b/volume_io/Volumes/output_mnc.c @@ -1430,7 +1430,7 @@ file->n_slab_dims++; /* integral number of complete dimensions */ } else { count[d] = MIN( volume_count[to_volume_index[d]], - (hsize_t)( MI_MAX_VAR_BUFFER_SIZE / ( slab_size * unit_size ) ) ); + (size_t)( MI_MAX_VAR_BUFFER_SIZE / ( slab_size * unit_size ) ) ); n_steps *= (int)( ( volume_count[to_volume_index[d]] + count[d] - 1 ) / count[d] ); } slab_size *= count[d];