Skip to content
Commits on Source (19)
sudo: false
language: c
os:
- linux
- osx
compiler:
- gcc
before_install: ./brew/brew_install.sh
addons:
apt:
packages:
- libnetcdf-dev
- libhdf5-serial-dev
script:
- cmake -DCMAKE_BUILD_TYPE:STRING=Release -DLIBMINC_MINC1_SUPPORT:BOOL=OFF -DBUILD_TESTING:BOOL=ON
- make
- make test
- cmake -DCMAKE_BUILD_TYPE:STRING=Release -DLIBMINC_MINC1_SUPPORT:BOOL=ON -DBUILD_TESTING:BOOL=ON
- make
- make test
......@@ -6,10 +6,10 @@
PROJECT(LIBMINC)
SET(LIBMINC_PACKAGE_VERSION_MAJOR 2)
SET(LIBMINC_PACKAGE_VERSION_MINOR 3)
SET(LIBMINC_PACKAGE_VERSION_PATCH 00)
SET(LIBMINC_PACKAGE_VERSION_MINOR 4)
SET(LIBMINC_PACKAGE_VERSION_PATCH 03)
SET(LIBMINC_SOVERSION "4.0.0")
SET(LIBMINC_SOVERSION "5.2.0")
SET(LIBMINC_PACKAGE "libminc")
SET(LIBMINC_PACKAGE_BUGREPORT "a.janke@gmail.com")
......@@ -22,7 +22,11 @@ INCLUDE(CTest)
ENABLE_TESTING()
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
IF( POLICY CMP0063 )
CMAKE_POLICY(SET CMP0063 NEW)
ENDIF()
IF(MINC_TOOLKIT_BUILD)
SET(LIBMINC_EXTERNALLY_CONFIGURED ON)
......@@ -46,6 +50,7 @@ IF(NOT LIBMINC_EXTERNALLY_CONFIGURED)
OPTION(LIBMINC_MINC1_SUPPORT "Support minc1 file format, requires NETCDF" OFF)
OPTION(LIBMINC_BUILD_EZMINC_EXAMPLES "Build EZminc examples" OFF)
OPTION(LIBMINC_USE_SYSTEM_NIFTI "Use system NIfTI-1 library" OFF)
SET (LIBMINC_EXPORTED_TARGETS "LIBMINC-targets")
SET (LIBMINC_INSTALL_BIN_DIR bin)
......@@ -59,12 +64,26 @@ IF(NOT LIBMINC_EXTERNALLY_CONFIGURED)
# external packages
FIND_PACKAGE(ZLIB REQUIRED)
FIND_PACKAGE(HDF5 REQUIRED)
SET(HDF5_NO_FIND_PACKAGE_CONFIG_FILE ON)
FIND_PACKAGE(HDF5 REQUIRED COMPONENTS C )
IF (LIBMINC_USE_SYSTEM_NIFTI)
FIND_PACKAGE(NIFTI)
ELSE(LIBMINC_USE_SYSTEM_NIFTI)
INCLUDE(ExternalProject)
INCLUDE(BuildNIFTI)
build_nifti(${CMAKE_INSTALL_PREFIX} ${CMAKE_BINARY_DIR}/external)
ENDIF(LIBMINC_USE_SYSTEM_NIFTI)
SET(HAVE_ZLIB ON)
ELSE(NOT LIBMINC_EXTERNALLY_CONFIGURED)
#TODO: set paths for HDF5 etc
ENDIF(NOT LIBMINC_EXTERNALLY_CONFIGURED)
IF(NOT DEFINED CMAKE_MACOSX_RPATH)
set(CMAKE_MACOSX_RPATH ON)
ENDIF(NOT DEFINED CMAKE_MACOSX_RPATH)
# Configure libminc
IF(LIBMINC_BUILD_SHARED_LIBS)
SET(LIBRARY_TYPE SHARED)
......@@ -86,6 +105,8 @@ ENDIF(UNIX)
# check for prereqs
INCLUDE(CheckFunctionExists)
INCLUDE(CheckSymbolExists)
INCLUDE(CheckLibraryExists)
CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
CHECK_FUNCTION_EXISTS(tmpnam HAVE_TMPNAM)
......@@ -102,17 +123,32 @@ CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR)
CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF)
CHECK_FUNCTION_EXISTS(system HAVE_SYSTEM)
if(NOT MSVC)
set(CMAKE_REQUIRED_LIBRARIES m)
endif()
set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE=1 )
CHECK_SYMBOL_EXISTS(rint "math.h" HAVE_RINT)
CHECK_SYMBOL_EXISTS(copysign "math.h" HAVE_COPYSIGN)
CHECK_SYMBOL_EXISTS(round "math.h" HAVE_ROUND)
unset(CMAKE_REQUIRED_LIBRARIES)
unset(CMAKE_REQUIRED_DEFINITIONS)
CHECK_FUNCTION_EXISTS(srand48 HAVE_SRAND48)
CHECK_FUNCTION_EXISTS(drand48 HAVE_DRAND48)
CHECK_FUNCTION_EXISTS(sleep HAVE_SLEEP)
CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
INCLUDE(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME)
IF(HAVE_CLOCK_GETTIME)
CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME_RT)
IF(HAVE_CLOCK_GETTIME_RT)
SET(RT_LIBRARY "rt")
ENDIF(HAVE_CLOCK_GETTIME)
SET(HAVE_CLOCK_GETTIME ON)
ELSE(HAVE_CLOCK_GETTIME_RT)
CHECK_SYMBOL_EXISTS(clock_gettime "time.h" HAVE_CLOCK_GETTIME)
ENDIF(HAVE_CLOCK_GETTIME_RT)
INCLUDE(CheckIncludeFiles)
CHECK_INCLUDE_FILES(float.h HAVE_FLOAT_H)
......@@ -122,6 +158,7 @@ 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(sys/time.h HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILES(time.h HAVE_TIME_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)
......@@ -134,10 +171,14 @@ 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)
CHECK_INCLUDE_FILES(sys/select.h HAVE_SYS_SELECT_H)
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
ADD_DEFINITIONS(-DMINC2=1)
IF(NOT APPLE)
ADD_DEFINITIONS(-D_XOPEN_SOURCE=500)
ENDIF(NOT APPLE)
# aliases
SET(VERSION "${LIBMINC_EXTERNAL_LIB_PREFIX}${LIBMINC_PACKAGE_VERSION}")
SET(HAVE_MINC1 ${LIBMINC_MINC1_SUPPORT})
......@@ -157,6 +198,15 @@ IF(LIBMINC_BUILD_EZMINC)
)
ENDIF(LIBMINC_BUILD_EZMINC)
IF(NIFTI_FOUND)
SET(LIBMINC_NIFTI_SUPPORT ON)
SET(LIBMINC_NIFTI_SOURCES
volume_io/Volumes/input_nifti.c
volume_io/Volumes/input_mgh.c
volume_io/Volumes/input_nrrd.c
)
ENDIF(NIFTI_FOUND)
# config files for build
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY)
......@@ -167,38 +217,46 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY
INCLUDE_DIRECTORIES(
${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
${CMAKE_CURRENT_SOURCE_DIR}/ezminc
${CMAKE_CURRENT_SOURCE_DIR}/nifti
${HDF5_INCLUDE_DIR}
${HDF5_INCLUDE_DIRS}
)
IF(LIBMINC_NIFTI_SUPPORT)
INCLUDE_DIRECTORIES(
${NIFTI_INCLUDE_DIR}
)
ENDIF(LIBMINC_NIFTI_SUPPORT)
SET(minc_common_SRCS
libsrc/time_stamp.c
libsrc/read_file_names.c
libsrc/ParseArgv.c
libsrc/restructure.c
libcommon/minc2_error.c
libcommon/minc_config.c
libcommon/minc_error.c
libcommon/ParseArgv.c
libcommon/read_file_names.c
libcommon/restructure.c
libcommon/time_stamp.c
)
SET(minc_common_HEADERS
libsrc/time_stamp.h
libsrc/ParseArgv.h
libsrc/read_file_names.h
libsrc/restructure.h
volume_io/Include/volume_io.h
nifti/nifti1.h
nifti/nifti1_io.h
nifti/znzlib.h
libcommon/minc2_error.h
libcommon/minc_config.h
libcommon/minc_error.h
libcommon/ParseArgv.h
libcommon/read_file_names.h
libcommon/restructure.h
libcommon/time_stamp.h
libcommon/minc_common_defs.h
volume_io/Include/volume_io.h # VF: WTF?
)
# some variables
SET(minc1_LIB_SRCS
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/value_conversion.c
......@@ -232,7 +290,6 @@ SET(minc2_LIB_SRCS
libsrc2/valid.c
libsrc2/volprops.c
libsrc2/volume.c
libsrc2/minc2_error.c
)
SET(minc2_HEADERS
......@@ -240,7 +297,6 @@ SET(minc2_HEADERS
libsrc2/minc2_defs.h
libsrc2/minc2_structs.h
libsrc2/minc2_api.h
libsrc2/minc2_error.h
)
# volume_io2
......@@ -281,12 +337,16 @@ SET(volume_io_LIB_SRCS
volume_io/Volumes/volumes.c
volume_io/Volumes/input_mnc2.c
volume_io/Volumes/output_mnc2.c
volume_io/Volumes/input_mgh.c
volume_io/Volumes/input_nifti.c
nifti/nifti1_io.c
nifti/znzlib.c
)
IF(LIBMINC_NIFTI_SUPPORT)
SET(volume_io_LIB_SRCS
${volume_io_LIB_SRCS}
${LIBMINC_NIFTI_SOURCES}
)
ENDIF(LIBMINC_NIFTI_SUPPORT)
SET(volume_io_HEADERS
volume_io/Include/volume_io/alloc.h
volume_io/Include/volume_io/arrays.h
......@@ -314,12 +374,21 @@ ELSE(LIBMINC_BUILD_SHARED_LIBS)
SET(LIBMINC_LIBRARY_STATIC ${LIBMINC_LIBRARY})
ENDIF(LIBMINC_BUILD_SHARED_LIBS)
SET(LIBMINC_LIBRARIES ${LIBMINC_LIBRARY} ${HDF5_LIBRARY} ${ZLIB_LIBRARY} ${RT_LIBRARY})
SET(LIBMINC_STATIC_LIBRARIES ${LIBMINC_LIBRARY_STATIC} ${HDF5_LIBRARY} ${ZLIB_LIBRARY} ${RT_LIBRARY})
IF(LIBMINC_NIFTI_SUPPORT)
SET(NIFTI_LIBRARIES
${NIFTI_LIBRARY} ${ZNZ_LIBRARY}
)
ELSE(LIBMINC_NIFTI_SUPPORT)
SET(NIFTI_LIBRARIES )
ENDIF(LIBMINC_NIFTI_SUPPORT)
SET(LIBMINC_LIBRARIES ${LIBMINC_LIBRARY} ${HDF5_LIBRARIES} ${NIFTI_LIBRARIES} ${ZLIB_LIBRARY})
SET(LIBMINC_STATIC_LIBRARIES ${LIBMINC_LIBRARY_STATIC} ${HDF5_LIBRARIES} ${NIFTI_LIBRARIES} ${ZLIB_LIBRARY})
IF(UNIX)
SET(LIBMINC_LIBRARIES ${LIBMINC_LIBRARIES} m dl)
SET(LIBMINC_STATIC_LIBRARIES ${LIBMINC_STATIC_LIBRARIES} m dl)
SET(LIBMINC_LIBRARIES ${LIBMINC_LIBRARIES} m dl ${RT_LIBRARY})
SET(LIBMINC_STATIC_LIBRARIES ${LIBMINC_STATIC_LIBRARIES} m dl ${RT_LIBRARY})
ENDIF(UNIX)
SET(minc_LIB_SRCS ${minc2_LIB_SRCS} ${minc_common_SRCS})
......@@ -333,14 +402,26 @@ ENDIF(LIBMINC_MINC1_SUPPORT)
# Keep this variable for compatibility
SET(VOLUME_IO_LIBRARY ${LIBMINC_EXTERNAL_LIB_PREFIX}minc2)
SET(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
ADD_LIBRARY(${LIBMINC_LIBRARY} ${LIBRARY_TYPE} ${minc_LIB_SRCS} ${minc_HEADERS} ${volume_io_LIB_SRCS} ${volume_io_HEADERS} )
TARGET_LINK_LIBRARIES(${LIBMINC_LIBRARY} ${HDF5_LIBRARY} ${ZLIB_LIBRARY} ${RT_LIBRARY}) #
IF(NIFTI_FOUND AND NOT LIBMINC_USE_SYSTEM_NIFTI)
ADD_DEPENDENCIES(${LIBMINC_LIBRARY} NIFTI)
ENDIF()
TARGET_LINK_LIBRARIES(${LIBMINC_LIBRARY} ${HDF5_LIBRARIES} ${NIFTI_LIBRARIES} ${ZLIB_LIBRARY} ${RT_LIBRARY}) #
IF(LIBMINC_MINC1_SUPPORT)
INCLUDE_DIRECTORIES(${NETCDF_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(${LIBMINC_LIBRARY} ${NETCDF_LIBRARY})
ENDIF(LIBMINC_MINC1_SUPPORT)
IF(NOT LIBMINC_USE_SYSTEM_NIFTI AND NOT LIBMINC_EXTERNALLY_CONFIGURED)
ADD_DEPENDENCIES(minc2 NIFTI)
ENDIF(NOT LIBMINC_USE_SYSTEM_NIFTI AND NOT LIBMINC_EXTERNALLY_CONFIGURED)
EXPORT(TARGETS ${LIBMINC_LIBRARY} FILE "${LIBMINC_EXPORTED_TARGETS}.cmake")
IF(UNIX)
......@@ -348,7 +429,7 @@ 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_LINK_LIBRARIES(${LIBMINC_LIBRARY_STATIC} ${HDF5_LIBRARY} ${ZLIB_LIBRARY} ${RT_LIBRARY} m dl )
TARGET_LINK_LIBRARIES(${LIBMINC_LIBRARY_STATIC} ${HDF5_LIBRARY} ${NIFTI_LIBRARIES} ${ZLIB_LIBRARY} ${RT_LIBRARY} m dl )
IF(LIBMINC_MINC1_SUPPORT)
TARGET_LINK_LIBRARIES(${LIBMINC_LIBRARY} ${NETCDF_LIBRARY})
ENDIF(LIBMINC_MINC1_SUPPORT)
......@@ -390,9 +471,9 @@ SET(LIBMINC_USE_FILE_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/UseLIBMINC.cmake)
SET(LIBMINC_INCLUDE_DIRS_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/libcommon
${CMAKE_CURRENT_SOURCE_DIR}/libsrc2
${CMAKE_CURRENT_SOURCE_DIR}/volume_io/Include
${CMAKE_CURRENT_SOURCE_DIR}/nifti
)
IF(LIBMINC_MINC1_SUPPORT)
......@@ -433,8 +514,13 @@ IF(SUPERBUILD_STAGING_PREFIX)
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" EZMINC_LIBRARIES "${EZMINC_LIBRARIES}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" NETCDF_INCLUDE_DIR "${NETCDF_INCLUDE_DIR}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" HDF5_INCLUDE_DIR "${HDF5_INCLUDE_DIR}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" HDF5_INCLUDE_DIRS "${HDF5_INCLUDE_DIRS}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" NIFTI_INCLUDE_DIR "${NIFTI_INCLUDE_DIR}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" NETCDF_LIBRARY "${NETCDF_LIBRARY}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" HDF5_LIBRARY "${HDF5_LIBRARY}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" HDF5_LIBRARIES "${HDF5_LIBRARIES}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" NIFTI_LIBRARY "${NIFTI_LIBRARY}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" ZNZ_LIBRARY "${ZNZ_LIBRARY}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" ZLIB_LIBRARY "${ZLIB_LIBRARY}")
STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" ZLIB_LIBRARIES "${ZLIB_LIBRARIES}")
ENDIF(SUPERBUILD_STAGING_PREFIX)
......
2016-05-05 Robert D. Vincent <robert.d.vincent@mcgill.ca>
* libsrc/minc_simple.c, libsrc/minc_simple.h: Improved the usefulness
of minc_get_world_transform() and added minc_transform_to_world().
2016-02-09 Robert D. Vincent <robert.d.vincent@mcgill.ca>
* libsrc2/dimension.c, libsrc2/volume.c, testdir/minc2-dimension-test.c:
Existing code did not properly implement miset_dimension_widths()
and miget_dimension_widths().
2015-11-16 Robert D. Vincent <robert.d.vincent@mcgill.ca>
* volume_io/Volumes/volumes.c,
volume_io/Include/volume_io/vol_io_protoypes.h: Added
copy_volume_new_type() and declared that
get_volume_total_n_voxels() returns size_t.
* testdir/volume_test.c: Created a simple test for volume functions.
* CMakeLists.txt: Updated LIBMINC_SOVERSION
2015-10-14 Robert D. Vincent <robert.d.vincent@mcgill.ca>
* volume_io/Volumes/input_mgh.c: Fix loading of time-varying MGZ files.
2015-10-07 Robert D. Vincent <robert.d.vincent@mcgill.ca>
* libsrc2/m2util.c, libsrc2/volume.c: Fix improper handling of
label volumes on big-endian architectures.
-- Release of minc 2.3.00 --
2015-10-01 Vladimir S. FONOV <vladimir.fonov@gmail.com>
* Added new configuration environment variable MINC_FILE_CACHE_MB,
it specifies (in megabytes) maximum per file cache for reading MINC2 files
default value is 100 Mb. **WARNING** specifying value of 0 will
significantly degrade performance on compressed minc2 files.
* Added new configuration environment variable MINC_CHECKSUM, when
set to 1 will enable FLETCHER32 checksum in new MINC2 files, but only when
chunking is enabled
2015-09-11 Robert D. Vincent <robert.d.vincent@mcgill.ca>
* Remove autoconf/automake support.
......
......@@ -7,12 +7,17 @@ set(HAVE_MINC2 1)
set(HAVE_EZMINC @LIBMINC_MINC1_SUPPORT@)
set(HAVE_MINC1 @LIBMINC_MINC1_SUPPORT@)
set(LIBMINC_NIFTI_SUPPORT @LIBMINC_NIFTI_SUPPORT@)
set(NETCDF_INCLUDE_DIR "@NETCDF_INCLUDE_DIR@")
set(HDF5_INCLUDE_DIR "@HDF5_INCLUDE_DIR@")
set(NIFTI_INCLUDE_DIR "@NIFTI_INCLUDE_DIR@")
set(NETCDF_LIBRARY "@NETCDF_LIBRARY@")
set(HDF5_LIBRARY "@HDF5_LIBRARY@")
set(ZLIB_LIBRARY "@ZLIB_LIBRARY@")
set(ZLIB_LIBRARIES "@ZLIB_LIBRARY@")
set(NIFTI_LIBRARIES "@NIFTI_LIBRARIES@")
set(LIBMINC_INCLUDE_DIRS "@LIBMINC_INCLUDE_DIRS_CONFIG@")
set(LIBMINC_LIBRARY_DIRS "@LIBMINC_LIBRARY_DIRS_CONFIG@")
......
......@@ -78,8 +78,32 @@ MINC_LOGFILE = [+]<pathname>|stdout|-
MINC_LOGLEVEL = 0-4
# Maximum memory buffer, used in some minc programs
#
MINC_MAX_FILE_BUFFER_KB = <N>
# Maximum allocated memory, used in some minc programs
#
MINC_MAX_MEMORY_KB = <N>
# Memory cache for MINC2 files, per open file
#
MINC_FILE_CACHE_MB = <N>
# Creation of HDF5 checksums for the volume, only works for MINC2
# file format
# default 0
#
MINC_CHECKSUM = {1,0}
# Prefer using MINC2 API inside Volume IO
# default 0
#
MINC_PREFER_V2_API = {1,0}
DOCUMENTATION
-------------
http://en.wikibooks.org/wiki/MINC
#!/bin/bash
if [ "${TRAVIS_OS_NAME}" = "osx" ]; then
brew install ./brew/netcdf.rb
brew install ./brew/hdf5.rb
fi
class Hdf5 < Formula
homepage "https://www.hdfgroup.org/HDF5/"
url "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.19/src/hdf5-1.8.19.tar.bz2"
sha256 "59c03816105d57990329537ad1049ba22c2b8afe1890085f0c022b75f1727238"
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
end
class Netcdf < Formula
homepage "http://www.unidata.ucar.edu/software/netcdf/"
url "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.3.1.tar.gz"
sha256 "bdde3d8b0e48eed2948ead65f82c5cfb7590313bc32c4cf6c6546e4cea47ba19"
def install
system "./configure", "--prefix=#{prefix}", "--disable-netcdf-4"
system "make", "install"
end
end
macro(build_nifti install_prefix staging_prefix)
if(CMAKE_EXTRA_GENERATOR)
set(CMAKE_GEN "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
else()
set(CMAKE_GEN "${CMAKE_GENERATOR}")
endif()
SET(NIFTI_CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
SET(NIFTI_CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
SET(NIFTI_CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
SET(NIFTI_CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
SET(NIFTI_CMAKE_CXX_FLAGS "-fPIC ${CMAKE_CXX_FLAGS}")
SET(NIFTI_CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}")
ExternalProject_Add(NIFTI
SOURCE_DIR NIFTI
BINARY_DIR NIFTI-build
URL "http://downloads.sourceforge.net/project/niftilib/nifticlib/nifticlib_2_0_0/nifticlib-2.0.0.tar.gz"
URL_MD5 "425a711f8f92fb1e1f088cbc55bea53a"
CMAKE_GENERATOR ${CMAKE_GEN}
CMAKE_ARGS
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DBUILD_SHARED_LIBS:BOOL=OFF
-DCMAKE_SKIP_RPATH:BOOL=YES
-DMACOSX_RPATH:BOOL=ON
-DCMAKE_INSTALL_RPATH:PATH=${install_prefix}/lib${LIB_SUFFIX}
-DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}
"-DCMAKE_CXX_FLAGS_RELEASE:STRING=${NIFTI_CMAKE_CXX_FLAGS_RELEASE}"
"-DCMAKE_C_FLAGS_RELEASE:STRING=${NIFTI_CMAKE_C_FLAGS_RELEASE}"
"-DCMAKE_CXX_FLAGS_DEBUG:STRING=${NIFTI_CMAKE_CXX_FLAGS_DEBUG}"
"-DCMAKE_C_FLAGS_DEBUG:STRING=${NIFTI_CMAKE_C_FLAGS_DEBUG}"
"-DCMAKE_CXX_FLAGS:STRING=${NIFTI_CMAKE_CXX_FLAGS}"
"-DCMAKE_C_FLAGS:STRING=${NIFTI_CMAKE_C_FLAGS}"
-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}
-DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS}
-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}
-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
-DZLIB_INCLUDE_DIR:PATH=${ZLIB_INCLUDE_DIR}
-DZLIB_LIBRARY:FILEPATH=${ZLIB_LIBRARY}
INSTALL_COMMAND $(MAKE) install DESTDIR=${staging_prefix}
INSTALL_DIR ${staging_prefix}/${install_prefix}
)
SET(NIFTI_LIBRARY ${staging_prefix}/${install_prefix}/lib${LIB_SUFFIX}/libniftiio.a )
SET(NIFTI_INCLUDE_DIR ${staging_prefix}/${install_prefix}/include/nifti )
SET(ZNZ_LIBRARY ${staging_prefix}/${install_prefix}/lib${LIB_SUFFIX}/libznz.a )
SET(ZNZ_INCLUDE_DIR ${staging_prefix}/${install_prefix}/include/nifti )
SET(NIFTI_FOUND ON)
message("NIFTI_INCLUDE_DIR=${NIFTI_INCLUDE_DIR}")
endmacro(build_nifti)
#
# this module look for HDF5 (http://hdf.ncsa.uiuc.edu) support
# it will define the following values
#
# HDF5_INCLUDE_DIR = where hdf5.h can be found
# HDF5_LIBRARY = the library to link against (hdf5 etc)
# HDF5_FOUND = set to true after finding the library
#
IF(EXISTS ${PROJECT_CMAKE}/Hdf5Config.cmake)
INCLUDE(${PROJECT_CMAKE}/Hdf5Config.cmake)
ENDIF(EXISTS ${PROJECT_CMAKE}/Hdf5Config.cmake)
IF(Hdf5_INCLUDE_DIRS)
FIND_PATH(HDF5_INCLUDE_DIR hdf5.h ${Hdf5_INCLUDE_DIRS})
FIND_LIBRARY(HDF5_LIBRARY hdf5 ${Hdf5_LIBRARY_DIRS})
ELSE(Hdf5_INCLUDE_DIRS)
SET(TRIAL_LIBRARY_PATHS
$ENV{HDF5_HOME}/lib
/usr/apps/lib
/usr/lib
/usr/local/lib
/opt/lib
/sw/lib
)
SET(TRIAL_INCLUDE_PATHS
$ENV{HDF5_HOME}/include
/usr/apps/include
/usr/include
/opt/include
/usr/local/include
/sw/include
)
IF($ENV{HDF5_DIR} MATCHES "hdf")
MESSAGE(STATUS "Using environment variable HDF5_DIR.")
SET(TRIAL_LIBRARY_PATHS $ENV{HDF5_DIR}/lib ${TRIAL_LIBRARY_PATHS} )
SET(TRIAL_INCLUDE_PATHS $ENV{HDF5_DIR}/include ${TRIAL_INCLUDE_PATHS} )
ENDIF($ENV{HDF5_DIR} MATCHES "hdf")
FIND_LIBRARY(HDF5_LIBRARY hdf5 ${TRIAL_LIBRARY_PATHS})
FIND_PATH(HDF5_INCLUDE_DIR hdf5.h ${TRIAL_INCLUDE_PATHS} )
ENDIF(Hdf5_INCLUDE_DIRS)
## -----------------------------------------------------------------------------
## Assign status of the search
IF(HDF5_INCLUDE_DIR AND HDF5_LIBRARY)
SET(HDF5_FOUND 1 CACHE BOOL "Found hdf5 library")
ELSE(HDF5_INCLUDE_DIR AND HDF5_LIBRARY)
SET(HDF5_FOUND 0 CACHE BOOL "Not fount hdf5 library")
ENDIF(HDF5_INCLUDE_DIR AND HDF5_LIBRARY)
## -----------------------------------------------------------------------------
## Feedback
IF (HDF5_FOUND)
IF (NOT HDF5_FIND_QUIETLY)
MESSAGE (STATUS "Found components for HDF5")
MESSAGE (STATUS "HDF5 library : ${HDF5_LIBRARY}")
MESSAGE (STATUS "HDF5 headers : ${HDF5_INCLUDE_DIR}")
ENDIF (NOT HDF5_FIND_QUIETLY)
ELSE (HDF5_FOUND)
IF (HDF5_FIND_REQUIRED)
MESSAGE (FATAL_ERROR "Could not find HDF5!")
ENDIF (HDF5_FIND_REQUIRED)
ENDIF (HDF5_FOUND)
## -----------------------------------------------------------------------------
## Variables marked as advanced
MARK_AS_ADVANCED(
HDF5_INCLUDE_DIR
HDF5_LIBRARY
HDF5_FOUND
)
# FindNIFTI.cmake module
FIND_PATH(NIFTI_INCLUDE_DIR nifti1_io.h /usr/include /usr/local/include /usr/local/bic/include)
FIND_LIBRARY(NIFTI_LIBRARY NAMES niftiio PATHS /usr/lib /usr/local/lib /usr/local/bic/lib)
FIND_PATH(ZNZ_INCLUDE_DIR znzlib.h /usr/include /usr/local/include /usr/local/bic/include)
FIND_LIBRARY(ZNZ_LIBRARY NAMES znz PATHS /usr/lib /usr/local/lib /usr/local/bic/lib)
IF (NIFTI_INCLUDE_DIR AND NIFTI_LIBRARY AND ZNZ_INCLUDE_DIR AND ZNZ_LIBRARY)
SET(NIFTI_FOUND TRUE)
ENDIF (NIFTI_INCLUDE_DIR AND NIFTI_LIBRARY AND ZNZ_INCLUDE_DIR AND ZNZ_LIBRARY)
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 (NOT NIFTI_FIND_QUIETLY)
ELSE (NIFTI_FOUND)
IF (NIFTI_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Cound not find NIfTI-1 I/O library")
ENDIF (NIFTI_FIND_REQUIRED)
ENDIF (NIFTI_FOUND)
......@@ -14,6 +14,7 @@
#cmakedefine HAVE_MINC1 1
#cmakedefine HAVE_MINC2 1
#cmakedefine LIBMINC_NIFTI_SUPPORT 1
#ifndef H5Acreate_vers
#define H5Acreate_vers 2
......@@ -23,6 +24,9 @@
#cmakedefine HAVE_STRERROR 1
#cmakedefine HAVE_FLOAT_H 1
#cmakedefine HAVE_COPYSIGN 1
#cmakedefine HAVE_ROUND 1
#cmakedefine HAVE_DIRENT_H 1
#cmakedefine HAVE_DLFCN_H 1
#cmakedefine HAVE_FCNTL_H 1
......@@ -46,8 +50,10 @@
#cmakedefine HAVE_SYS_NDIR_H 1
#cmakedefine HAVE_SYS_STAT_H 1
#cmakedefine HAVE_SYS_TIME_H 1
#cmakedefine HAVE_TIME_H 1
#cmakedefine HAVE_SYS_TYPES_H 1
#cmakedefine HAVE_SYS_WAIT_H 1
#cmakedefine HAVE_SYS_SELECT_H 1
#cmakedefine HAVE_TEMPNAM 1
#cmakedefine HAVE_TMPNAM 1
#cmakedefine HAVE_UNISTD_H 1
......@@ -64,3 +70,5 @@
#cmakedefine HAVE_SLEEP 1
#cmakedefine HAVE_CLOCK_GETTIME 1
#cmakedefine HAVE_GETTIMEOFDAY 1
#cmakedefine HAVE_RINT 1
libminc (2.4.03-1~exp1) UNRELEASED; urgency=medium
* Team upload.
* New upstream version 2.4.03
* d/p: remove patches resolved upstream
* d/rules: Enable system nifti from build rules
* d/control: cme fix dpkg: Update urls and standard (no changes needed)
* d/rules, *.install: Move to use install files
* d/p/remove-rpath: Don't set rpath when installing
* Correct *.cmake install location
* d/rules: add -ffloat-store in i386 build to pass tests
-- Gert Wollny <gewo@debian.org> Sat, 19 May 2018 22:12:40 +0200
libminc (2.3.00-5) unstable; urgency=medium
* Team upload
......
......@@ -10,12 +10,12 @@ Build-Depends: debhelper (>= 10),
libnifti-dev,
zlib1g-dev,
libhdf5-dev
Standards-Version: 4.1.1
Vcs-Browser: https://anonscm.debian.org/cgit/debian-med/libminc.git
Vcs-Git: https://anonscm.debian.org/git/debian-med/libminc.git
Standards-Version: 4.1.4
Vcs-Browser: https://salsa.debian.org/med-team/libminc
Vcs-Git: https://salsa.debian.org/med-team/libminc.git
Homepage: https://github.com/BIC-MNI/libminc
Package: libminc2-4.0.0
Package: libminc2-5.2.0
Architecture: any
Multi-Arch: same
Section: libs
......@@ -41,7 +41,7 @@ Package: libminc-dev
Architecture: any
Section: libdevel
Depends: ${misc:Depends},
libminc2-4.0.0 (= ${binary:Version}),
libminc2-5.2.0 (= ${binary:Version}),
libnetcdf-dev,
libhdf5-dev
Conflicts: libminc0-dev
......
usr/lib/*/lib*.so
usr/lib/*/cmake/*.cmake
usr/include/*
From: Ghislain Antony Vaillant <ghisvail@gmail.com>
Date: Thu, 25 Aug 2016 13:20:22 +0100
Subject: Use system FindHDF5 CMake module.
---
CMakeLists.txt | 5 +--
cmake-modules/FindHDF5.cmake | 81 --------------------------------------------
2 files changed, 3 insertions(+), 83 deletions(-)
delete mode 100644 cmake-modules/FindHDF5.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index df996ed..8eeb50b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -59,9 +59,10 @@ IF(NOT LIBMINC_EXTERNALLY_CONFIGURED)
# external packages
FIND_PACKAGE(ZLIB REQUIRED)
- FIND_PACKAGE(HDF5 REQUIRED)
+ FIND_PACKAGE(HDF5 COMPONENTS C REQUIRED)
SET(HAVE_ZLIB ON)
- set(HDF5_LIBRARY ${HDF5_C_LIBRARIES})
+ set(HDF5_LIBRARY ${HDF5_LIBRARIES})
+ set(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_DIRS})
ELSE(NOT LIBMINC_EXTERNALLY_CONFIGURED)
#TODO: set paths for HDF5 etc
ENDIF(NOT LIBMINC_EXTERNALLY_CONFIGURED)
diff --git a/cmake-modules/FindHDF5.cmake b/cmake-modules/FindHDF5.cmake
deleted file mode 100644
index 6de68d0..0000000
--- a/cmake-modules/FindHDF5.cmake
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# this module look for HDF5 (http://hdf.ncsa.uiuc.edu) support
-# it will define the following values
-#
-# HDF5_INCLUDE_DIR = where hdf5.h can be found
-# HDF5_LIBRARY = the library to link against (hdf5 etc)
-# HDF5_FOUND = set to true after finding the library
-#
-
-IF(EXISTS ${PROJECT_CMAKE}/Hdf5Config.cmake)
- INCLUDE(${PROJECT_CMAKE}/Hdf5Config.cmake)
-ENDIF(EXISTS ${PROJECT_CMAKE}/Hdf5Config.cmake)
-
-IF(Hdf5_INCLUDE_DIRS)
-
- FIND_PATH(HDF5_INCLUDE_DIR hdf5.h ${Hdf5_INCLUDE_DIRS})
- FIND_LIBRARY(HDF5_LIBRARY hdf5 ${Hdf5_LIBRARY_DIRS})
-
-ELSE(Hdf5_INCLUDE_DIRS)
-
- SET(TRIAL_LIBRARY_PATHS
- $ENV{HDF5_HOME}/lib
- /usr/apps/lib
- /usr/lib
- /usr/local/lib
- /opt/lib
- /sw/lib
- )
-
- SET(TRIAL_INCLUDE_PATHS
- $ENV{HDF5_HOME}/include
- /usr/apps/include
- /usr/include
- /opt/include
- /usr/local/include
- /sw/include
- )
-
- IF($ENV{HDF5_DIR} MATCHES "hdf")
- MESSAGE(STATUS "Using environment variable HDF5_DIR.")
- SET(TRIAL_LIBRARY_PATHS $ENV{HDF5_DIR}/lib ${TRIAL_LIBRARY_PATHS} )
- SET(TRIAL_INCLUDE_PATHS $ENV{HDF5_DIR}/include ${TRIAL_INCLUDE_PATHS} )
- ENDIF($ENV{HDF5_DIR} MATCHES "hdf")
-
- FIND_LIBRARY(HDF5_LIBRARY hdf5 ${TRIAL_LIBRARY_PATHS})
- FIND_PATH(HDF5_INCLUDE_DIR hdf5.h ${TRIAL_INCLUDE_PATHS} )
-
-ENDIF(Hdf5_INCLUDE_DIRS)
-
-## -----------------------------------------------------------------------------
-## Assign status of the search
-
-IF(HDF5_INCLUDE_DIR AND HDF5_LIBRARY)
- SET(HDF5_FOUND 1 CACHE BOOL "Found hdf5 library")
-ELSE(HDF5_INCLUDE_DIR AND HDF5_LIBRARY)
- SET(HDF5_FOUND 0 CACHE BOOL "Not fount hdf5 library")
-ENDIF(HDF5_INCLUDE_DIR AND HDF5_LIBRARY)
-
-## -----------------------------------------------------------------------------
-## Feedback
-
-IF (HDF5_FOUND)
- IF (NOT HDF5_FIND_QUIETLY)
- MESSAGE (STATUS "Found components for HDF5")
- MESSAGE (STATUS "HDF5 library : ${HDF5_LIBRARY}")
- MESSAGE (STATUS "HDF5 headers : ${HDF5_INCLUDE_DIR}")
- ENDIF (NOT HDF5_FIND_QUIETLY)
-ELSE (HDF5_FOUND)
- IF (HDF5_FIND_REQUIRED)
- MESSAGE (FATAL_ERROR "Could not find HDF5!")
- ENDIF (HDF5_FIND_REQUIRED)
-ENDIF (HDF5_FOUND)
-
-## -----------------------------------------------------------------------------
-## Variables marked as advanced
-
-MARK_AS_ADVANCED(
- HDF5_INCLUDE_DIR
- HDF5_LIBRARY
- HDF5_FOUND
-)
......@@ -9,11 +9,11 @@ version, but also require this patch so that the newer
variable HDF5_C_LIBRARIES is used.
--- libminc-2.3.00~2015-08-24.orig/CMakeLists.txt
+++ libminc-2.3.00~2015-08-24/CMakeLists.txt
@@ -61,6 +61,7 @@
FIND_PACKAGE(ZLIB REQUIRED)
FIND_PACKAGE(HDF5 REQUIRED)
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -76,6 +76,7 @@
ENDIF(LIBMINC_USE_SYSTEM_NIFTI)
SET(HAVE_ZLIB ON)
+ set(HDF5_LIBRARY ${HDF5_C_LIBRARIES})
ELSE(NOT LIBMINC_EXTERNALLY_CONFIGURED)
......
From 166aca9f4c33bc5642047ceafd5c6bae0d888187 Mon Sep 17 00:00:00 2001
From: "Robert D. Vincent" <robert.d.vincent@mcgill.ca>
Date: Wed, 7 Oct 2015 22:06:38 +0000
Subject: [PATCH] Fix endian issues with label data.
---
libsrc2/m2util.c | 83 ++++++++++++++++++++++++++++++++++++++++++++------------
libsrc2/volume.c | 4 +--
2 files changed, 66 insertions(+), 21 deletions(-)
--- a/libsrc2/m2util.c
+++ b/libsrc2/m2util.c
@@ -1343,33 +1343,80 @@ void miinit ( void )
mi2_dbl_to_int ),"H5Tregister")
}
-/** HDF5 type conversion function for converting an arbitrary integer type to
-* an arbitrary enumerated type. The beauty part of this is that it is
-* not necessary to actually perform any real conversion!
-*/
-static herr_t mi2_null_conv ( hid_t src_id,
- hid_t dst_id,
- H5T_cdata_t *cdata,
- size_t nelements,
- size_t buf_stride,
- size_t bkg_stride,
- void *buf_ptr,
- void *bkg_ptr,
- hid_t dset_xfer_plist )
+/** HDF5 type conversion function for converting among integer types.
+ * This handles byte-swapping for enumerated types where needed.
+ */
+static herr_t mi2_int_to_int ( hid_t src_id,
+ hid_t dst_id,
+ H5T_cdata_t *cdata,
+ size_t nelements,
+ size_t buf_stride,
+ size_t bkg_stride,
+ void *buf_ptr,
+ void *bkg_ptr,
+ hid_t dset_xfer_plist )
{
+ unsigned char *dst_ptr;
+ size_t dst_cnt;
+ size_t dst_sz;
+
switch ( cdata->command ) {
case H5T_CONV_INIT:
break;
case H5T_CONV_CONV:
+ dst_ptr = ( unsigned char * ) buf_ptr;
+ dst_sz = H5Tget_size( dst_id );
+
+ if (dst_sz != H5Tget_size( src_id )) {
+ return -1; /* Can't change size for now. */
+ }
+ if ( H5Tget_order ( dst_id ) == H5Tget_order ( src_id ) ) {
+ return 0; /* Nothing to do. */
+ }
+
+ /* The logic of HDF5 seems to be that if a stride is specified,
+ * both the source and destination pointers should advance by that
+ * amount. This seems wrong to me, but I've examined the HDF5 sources
+ * and that's what their own type converters do.
+ */
+ if ( buf_stride == 0 ) {
+ dst_cnt = dst_sz;
+ } else {
+ dst_cnt = buf_stride;
+ }
+
+ switch ( dst_sz ) {
+ case 8:
+ while ( nelements-- > 0 ) {
+ miswap8 ( dst_ptr );
+ dst_ptr += dst_cnt;
+ }
+ break;
+ case 4:
+ while ( nelements-- > 0 ) {
+ miswap4 ( dst_ptr );
+ dst_ptr += dst_cnt;
+ }
+ break;
+ case 2:
+ while ( nelements-- > 0 ) {
+ miswap2 ( dst_ptr );
+ dst_ptr += dst_cnt;
+ }
+ break;
+ case 1:
+ break;
+ default:
+ return (-1);
+ }
break;
+
case H5T_CONV_FREE:
break;
default:
- /* Unknown command */
- return ( -1 );
+ return (-1); /* Unknown command. */
}
-
return ( 0 );
}
@@ -1380,9 +1427,9 @@ in order to facilitate conversions from
void miinit_enum ( hid_t type_id )
{
H5Tregister ( H5T_PERS_SOFT, "i2e", H5T_NATIVE_INT, type_id,
- mi2_null_conv );
+ mi2_int_to_int );
H5Tregister ( H5T_PERS_SOFT, "e2i", type_id, H5T_NATIVE_INT,
- mi2_null_conv );
+ mi2_int_to_int );
H5Tregister ( H5T_PERS_SOFT, "d2e", H5T_NATIVE_DOUBLE, type_id,
mi2_dbl_to_int );
H5Tregister ( H5T_PERS_SOFT, "e2d", type_id, H5T_NATIVE_DOUBLE,
--- a/libsrc2/volume.c
+++ b/libsrc2/volume.c
@@ -1409,11 +1409,9 @@ int miopen_volume(const char *filename,
break;
case H5T_ENUM:
- handle->mtype_id = H5Tcopy(handle->ftype_id);
+ handle->mtype_id = H5Tget_native_type(handle->ftype_id, H5T_DIR_ASCEND);
miinit_enum(handle->ftype_id);
miinit_enum(handle->mtype_id);
- /* Set native order ---> is not allowed after order is set */
- //H5Tset_order(handle->mtype_id, H5Tget_order(H5T_NATIVE_INT));
break;
default: