Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 17 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
# Andrew Janke - a.janke@gmail.com
# Vladimir S. FONOV - vladimir.fonov@gmail.com

cmake_minimum_required(VERSION 3.10...4.2)
cmake_minimum_required(VERSION 3.22...4.2)

project(LIBMINC)
project(LIBMINC LANGUAGES C CXX)

set(LIBMINC_PACKAGE_VERSION_MAJOR 2)
set(LIBMINC_PACKAGE_VERSION_MINOR 4)
Expand Down Expand Up @@ -34,7 +34,7 @@ set(LIBMINC_BUILD_V2 ON)

if(NOT LIBMINC_EXTERNALLY_CONFIGURED)
# Allowing User to configure parameters
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules")

set(CPACK_GENERATOR TGZ)
set(CPACK_PACKAGE_VERSION_MAJOR ${LIBMINC_PACKAGE_VERSION_MAJOR})
Expand Down Expand Up @@ -109,8 +109,7 @@ endif()

# add for building relocatable library
if(UNIX)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()


Expand Down Expand Up @@ -202,10 +201,9 @@ CHECK_INCLUDE_FILES(pwd.h HAVE_PWD_H)
CHECK_INCLUDE_FILES(sys/select.h HAVE_SYS_SELECT_H)


add_definitions(-DHAVE_CONFIG_H)
add_definitions(-DMINC2=1)
set(MINC_COMPILE_DEFINITIONS HAVE_CONFIG_H MINC2=1)
if(NOT APPLE)
add_definitions(-D_XOPEN_SOURCE=500)
list(APPEND MINC_COMPILE_DEFINITIONS _XOPEN_SOURCE=500)
endif()
# aliases
set(VERSION "${LIBMINC_EXTERNAL_LIB_PREFIX}${LIBMINC_PACKAGE_VERSION}")
Expand All @@ -214,14 +212,14 @@ set(HAVE_MINC2 ON)
set(MINC2 "1")

if(LIBMINC_MINC1_SUPPORT)
add_definitions(-DHAVE_MINC1=1)
list(APPEND MINC_COMPILE_DEFINITIONS HAVE_MINC1=1)
endif()

if(LIBMINC_BUILD_EZMINC)
set(LIBMINC_INCLUDE_DIRS_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/ezminc
)
include_directories(
list(APPEND MINC_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/ezminc
)
endif()
Expand All @@ -242,22 +240,21 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY
#configure_file(${CMAKE_CURRENT_SOURCE_DIR}/epm-header.in ${CMAKE_CURRENT_BINARY_DIR}/epm-header)

# set the master INCLUDE directories
include_directories(
list(APPEND MINC_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/libcommon
${CMAKE_CURRENT_SOURCE_DIR}/libsrc2
${CMAKE_CURRENT_SOURCE_DIR}/libsrc
${CMAKE_CURRENT_SOURCE_DIR}/volume_io/Include
${HDF5_INCLUDE_DIRS}
)

if(LIBMINC_BUILD_EZMINC AND LIBMINC_MINC1_SUPPORT)
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/ezminc )
list(APPEND MINC_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/ezminc)
endif()

if(LIBMINC_NIFTI_SUPPORT)
include_directories(
list(APPEND MINC_INCLUDE_DIRS
${NIFTI_INCLUDE_DIR}
)
endif()
Expand Down Expand Up @@ -456,6 +453,9 @@ set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})

add_library(${LIBMINC_LIBRARY} ${LIBRARY_TYPE} ${minc_LIB_SRCS} ${minc_HEADERS} ${volume_io_LIB_SRCS} ${volume_io_HEADERS} )

target_include_directories(${LIBMINC_LIBRARY} PUBLIC ${MINC_INCLUDE_DIRS} ${HDF5_INCLUDE_DIRS})
target_compile_definitions(${LIBMINC_LIBRARY} PUBLIC ${MINC_COMPILE_DEFINITIONS})

if(NIFTI_FOUND AND NOT LIBMINC_USE_SYSTEM_NIFTI)
add_dependencies(${LIBMINC_LIBRARY} NIFTI)
endif()
Expand All @@ -464,7 +464,7 @@ endif()
target_link_libraries(${LIBMINC_LIBRARY} ${HDF5_LIBRARY} ${NIFTI_LIBRARIES} ${ZLIB_LIBRARY} ${RT_LIBRARY}) #

if(LIBMINC_MINC1_SUPPORT)
include_directories(${NETCDF_INCLUDE_DIR})
target_include_directories(${LIBMINC_LIBRARY} PUBLIC ${NETCDF_INCLUDE_DIR})
target_link_libraries(${LIBMINC_LIBRARY} ${NETCDF_LIBRARY})
get_filename_component(NETCDF_LIBRARY_NAME "${NETCDF_LIBRARY}" NAME)
else()
Expand All @@ -482,6 +482,8 @@ if(UNIX)

if(LIBMINC_BUILD_SHARED_LIBS)
add_library(${LIBMINC_LIBRARY_STATIC} STATIC ${minc_LIB_SRCS} ${minc_HEADERS} ${volume_io_LIB_SRCS} ${volume_io_HEADERS} )
target_include_directories(${LIBMINC_LIBRARY_STATIC} PUBLIC ${MINC_INCLUDE_DIRS} ${HDF5_INCLUDE_DIRS})
target_compile_definitions(${LIBMINC_LIBRARY_STATIC} PUBLIC ${MINC_COMPILE_DEFINITIONS})
target_link_libraries(${LIBMINC_LIBRARY_STATIC} ${HDF5_LIBRARY} ${NIFTI_LIBRARIES} ${ZLIB_LIBRARY} ${RT_LIBRARY} m ${CMAKE_DL_LIBS} )
if(LIBMINC_MINC1_SUPPORT)
target_link_libraries(${LIBMINC_LIBRARY} ${NETCDF_LIBRARY})
Expand Down
14 changes: 7 additions & 7 deletions UseLIBMINC.cmake.in
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
include_directories(${LIBMINC_INCLUDE_DIRS})
# Usage: Downstream projects should prefer using target_link_libraries()
# with the imported LIBMINC targets. This file provides backward-compatible
# variable-based configuration.

# Legacy include/link directory variables for projects not using
# target-based dependencies directly:
# LIBMINC_INCLUDE_DIRS, LIBMINC_LIBRARY_DIRS, LIBMINC_LIBRARIES

if(HAVE_MINC1)
add_definitions( -DHAVE_MINC1=1)

include_directories(${NETCDF_INCLUDE_DIR})
endif()

if(HAVE_MINC2)
set(MINC2 "1")
add_definitions( -DMINC2=1 -DHAVE_MINC2=1)

include_directories(${HDF5_INCLUDE_DIR})
endif()

link_directories(${LIBMINC_LIBRARY_DIRS})
26 changes: 9 additions & 17 deletions cmake-modules/FindNETCDF.cmake
Original file line number Diff line number Diff line change
@@ -1,23 +1,15 @@
# FindNetCDF.cmake module

include(FindPackageHandleStandardArgs)

find_path(NETCDF_INCLUDE_DIR netcdf.h /usr/include /usr/local/include /usr/local/bic/include)
find_path(NETCDF_INCLUDE_DIR netcdf.h)

find_library(NETCDF_LIBRARY NAMES netcdf PATHS /usr/lib /usr/local/lib /usr/local/bic/lib)
find_library(NETCDF_LIBRARY NAMES netcdf)

find_package_handle_standard_args(NETCDF
REQUIRED_VARS NETCDF_LIBRARY NETCDF_INCLUDE_DIR
)

if (NETCDF_INCLUDE_DIR AND NETCDF_LIBRARY)
set(NETCDF_FOUND TRUE)
endif ()


if (NETCDF_FOUND)
if (NOT NETCDF_FIND_QUIETLY)
message(STATUS "Found NetCDF headers: ${NETCDF_INCLUDE_DIR}")
message(STATUS "Found NetCDF library: ${NETCDF_LIBRARY}")
endif ()
else ()
if (NETCDF_FIND_REQUIRED)
message(FATAL_ERROR "Could not find NetCDF")
endif ()
endif ()
if(NETCDF_FOUND)
mark_as_advanced(NETCDF_INCLUDE_DIR NETCDF_LIBRARY)
endif()
32 changes: 11 additions & 21 deletions cmake-modules/FindNIFTI.cmake
Original file line number Diff line number Diff line change
@@ -1,29 +1,19 @@
# FindNIFTI.cmake module

include(FindPackageHandleStandardArgs)

find_path(NIFTI_INCLUDE_DIR nifti1_io.h /usr/include /usr/local/include /usr/local/bic/include)
find_path(NIFTI_INCLUDE_DIR nifti1_io.h)

find_library(NIFTI_LIBRARY NAMES niftiio PATHS /usr/lib /usr/local/lib /usr/local/bic/lib)
find_library(NIFTI_LIBRARY NAMES niftiio)

find_path(ZNZ_INCLUDE_DIR znzlib.h /usr/include /usr/local/include /usr/local/bic/include)
find_path(ZNZ_INCLUDE_DIR znzlib.h)

find_library(ZNZ_LIBRARY NAMES znz PATHS /usr/lib /usr/local/lib /usr/local/bic/lib)
find_library(ZNZ_LIBRARY NAMES znz)

find_package_handle_standard_args(NIFTI
REQUIRED_VARS NIFTI_LIBRARY NIFTI_INCLUDE_DIR ZNZ_LIBRARY ZNZ_INCLUDE_DIR
)

if (NIFTI_INCLUDE_DIR AND NIFTI_LIBRARY AND ZNZ_INCLUDE_DIR AND ZNZ_LIBRARY)
set(NIFTI_FOUND TRUE)
endif ()


if (NIFTI_FOUND)
if (NOT NIFTI_FIND_QUIETLY)
message(STATUS "Found NetCDF headers: ${NIFTI_INCLUDE_DIR}")
message(STATUS "Found NetCDF library: ${NIFTI_LIBRARY}")
message(STATUS "Found znzlib headers: ${ZNZ_INCLUDE_DIR}")
message(STATUS "Found znzlib library: ${ZNZ_LIBRARY}")
endif ()
else ()
if (NIFTI_FIND_REQUIRED)
message(FATAL_ERROR "Could not find NIfTI-1 I/O library")
endif ()
endif ()
if(NIFTI_FOUND)
mark_as_advanced(NIFTI_INCLUDE_DIR NIFTI_LIBRARY ZNZ_INCLUDE_DIR ZNZ_LIBRARY)
endif()
5 changes: 3 additions & 2 deletions ezminc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
if(LIBMINC_BUILD_V2)
add_definitions( -DMINC2 )
set(MINC_IO_DEFINITIONS MINC2)
endif()


Expand All @@ -18,8 +18,9 @@ set( MINC_IO_SRC
minc_1_simple_rw.cpp
)

include_directories( ${CMAKE_CURRENT_SOURCE_DIR})
add_library( minc_io ${LIBRARY_TYPE} ${MINC_IO_HEADERS} ${MINC_IO_SRC})
target_include_directories(minc_io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(minc_io PUBLIC ${MINC_IO_DEFINITIONS})
target_link_libraries(minc_io ${LIBMINC_LIBRARIES})

set_target_properties(minc_io
Expand Down
6 changes: 4 additions & 2 deletions ezminc/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
link_libraries(minc_io)

add_executable(trilinear_resample trilinear_resample.cpp)
target_link_libraries(trilinear_resample minc_io)
add_executable(volume_avg volume_avg.cpp)
target_link_libraries(volume_avg minc_io)
add_executable(volume_msq_dist volume_msq_dist.cpp)
target_link_libraries(volume_msq_dist minc_io)
add_executable(create_grid_file create_grid_file.cpp)
target_link_libraries(create_grid_file minc_io)
4 changes: 2 additions & 2 deletions ezminc/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
link_libraries(minc_io ${LIBMINC_LIBRARIES})

add_executable(ezminc_rw_test ezminc_rw_test.cpp)
target_link_libraries(ezminc_rw_test minc_io ${LIBMINC_LIBRARIES})
#add_executable(ezminc_stats ezminc_stats.cpp)

add_test(ezminc_rw_test ezminc_rw_test ${CMAKE_CURRENT_BINARY_DIR})

add_executable(ezminc_rw_test2 minc_rw_test2.cpp)
target_link_libraries(ezminc_rw_test2 minc_io ${LIBMINC_LIBRARIES})


if(MINC_TEST_ENVIRONMENT)
Expand Down
20 changes: 17 additions & 3 deletions testdir/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
link_libraries(${LIBMINC_LIBRARIES})


macro(minc_test cmd)
# minc 1 version
if(HAVE_MINC1)
Expand Down Expand Up @@ -64,6 +61,11 @@ if(LIBMINC_MINC1_SUPPORT)
add_executable(minc_long_attr minc_long_attr.c)
add_executable(minc_conversion minc_conversion.c)

foreach(_target minc_tst icv icv_vec icv_dim1 icv_dim icv_fillvalue icv_range
mincapi minc_types test_mconv minc_long_attr minc_conversion)
target_link_libraries(${_target} ${LIBMINC_LIBRARIES})
endforeach()

# running tests
minc_test(minc_types)
minc_test(icv_dim1)
Expand Down Expand Up @@ -94,9 +96,11 @@ endif()

# Volume IO tests
add_executable(volume_test volume_test.c)
target_link_libraries(volume_test ${LIBMINC_LIBRARIES})
add_test(volume_test-1 volume_test)

add_executable(multidim_test multidim_test.c)
target_link_libraries(multidim_test ${LIBMINC_LIBRARIES})
add_test(volume_multidim_test multidim_test)

add_executable(test_xfm vio_xfm_test/test-xfm.c)
Expand Down Expand Up @@ -151,6 +155,7 @@ set_property(TEST verify_xfm_2 APPEND PROPERTY DEPENDS copy_xfm)

#common tests
add_executable(test_arg_parse test_arg_parse.c)
target_link_libraries(test_arg_parse ${LIBMINC_LIBRARIES})
add_minc_test(test_arg_parse test_arg_parse)


Expand Down Expand Up @@ -179,6 +184,15 @@ add_executable(minc2-read-metadata minc2-read-metadata.c)
add_executable(minc2-leak-test minc2-leak-test.c)
add_executable(minc2-float-voxel-test minc2-float-voxel-test.c)

foreach(_target minc2-convert-test minc2-create-test-images-2 minc2-create-test-images
minc2-datatype-test minc2-large-attribute minc2-dimension-test
minc2-full-test minc2-grpattr-test minc2-hyper-test-2 minc2-hyper-test
minc2-label-test minc2-multires-test minc2-record-test minc2-slice-test
minc2-valid-test minc2-vector_dimension-test minc2-volprops-test
minc2-read-rgb minc2-read-metadata minc2-leak-test minc2-float-voxel-test)
target_link_libraries(${_target} ${LIBMINC_LIBRARIES})
endforeach()

add_minc_test(minc2-convert-test minc2-convert-test)
add_minc_test(minc2-create-test-images minc2-create-test-images
${CMAKE_CURRENT_BINARY_DIR}/2D_minc2.mnc
Expand Down
Loading