# CMakeFiles.txt for the libminc library
#
# Andrew Janke - a.janke@gmail.com
# Vladimir S. FONOV - vladimir.fonov@gmail.com

PROJECT(LIBMINC)

SET(LIBMINC_PACKAGE_VERSION_MAJOR 2)
SET(LIBMINC_PACKAGE_VERSION_MINOR 3)
SET(LIBMINC_PACKAGE_VERSION_PATCH 01)

SET(LIBMINC_SOVERSION "4.0.0")

SET(LIBMINC_PACKAGE "libminc")
SET(LIBMINC_PACKAGE_BUGREPORT "a.janke@gmail.com")

SET(LIBMINC_PACKAGE_NAME "libminc")
SET(LIBMINC_PACKAGE_VERSION "${LIBMINC_PACKAGE_VERSION_MAJOR}.${LIBMINC_PACKAGE_VERSION_MINOR}.${LIBMINC_PACKAGE_VERSION_PATCH}")
SET(LIBMINC_PACKAGE_STRING  "${LIBMINC_PACKAGE_NAME} ${LIBMINC_PACKAGE_VERSION}")

INCLUDE(CTest)

ENABLE_TESTING()

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

IF(MINC_TOOLKIT_BUILD)
  SET(LIBMINC_EXTERNALLY_CONFIGURED ON)
ENDIF(MINC_TOOLKIT_BUILD)

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")

  SET(CPACK_GENERATOR TGZ)
  SET(CPACK_PACKAGE_VERSION_MAJOR ${LIBMINC_PACKAGE_VERSION_MAJOR})
  SET(CPACK_PACKAGE_VERSION_MINOR ${LIBMINC_PACKAGE_VERSION_MINOR})
  SET(CPACK_PACKAGE_VERSION_PATCH ${LIBMINC_PACKAGE_VERSION_PATCH})
  SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
  SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Medical Imaging library core IO")

  OPTION(LIBMINC_BUILD_SHARED_LIBS   "Build libminc with shared libraries."        OFF)


  OPTION(LIBMINC_MINC1_SUPPORT           "Support minc1 file format, requires NETCDF" OFF)
  OPTION(LIBMINC_BUILD_EZMINC_EXAMPLES   "Build EZminc examples" OFF)

  SET (LIBMINC_EXPORTED_TARGETS "LIBMINC-targets")
  SET (LIBMINC_INSTALL_BIN_DIR bin)
  SET (LIBMINC_INSTALL_LIB_DIR lib${LIB_SUFFIX})
  SET (LIBMINC_INSTALL_INCLUDE_DIR include)
  SET (LIBMINC_INSTALL_DATA_DIR share)

  IF(LIBMINC_MINC1_SUPPORT)
    FIND_PACKAGE(NETCDF REQUIRED)
  ENDIF(LIBMINC_MINC1_SUPPORT)

  # external packages
  FIND_PACKAGE(ZLIB REQUIRED)
  FIND_PACKAGE(HDF5 REQUIRED)
  SET(HAVE_ZLIB ON)
ELSE(NOT LIBMINC_EXTERNALLY_CONFIGURED)
  #TODO: set paths for HDF5 etc
ENDIF(NOT LIBMINC_EXTERNALLY_CONFIGURED)

# Configure libminc
IF(LIBMINC_BUILD_SHARED_LIBS)
  SET(LIBRARY_TYPE SHARED)
  SET(LIBRARY_INSTALL LIBRARY)
ELSE(LIBMINC_BUILD_SHARED_LIBS)
  SET(LIBRARY_TYPE STATIC)
  SET(LIBRARY_INSTALL ARCHIVE)
ENDIF(LIBMINC_BUILD_SHARED_LIBS)

IF(CMAKE_BUILD_TYPE MATCHES Debug)
  SET(DEBUG "1")
ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)

# 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)

CHECK_FUNCTION_EXISTS(copysign HAVE_COPYSIGN)
CHECK_FUNCTION_EXISTS(round    HAVE_ROUND)

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)
  SET(RT_LIBRARY "rt")
ENDIF(HAVE_CLOCK_GETTIME)

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(sys/time.h  HAVE_SYS_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)
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)
ADD_DEFINITIONS(-DMINC2=1)

# aliases
SET(VERSION "${LIBMINC_EXTERNAL_LIB_PREFIX}${LIBMINC_PACKAGE_VERSION}")
SET(HAVE_MINC1 ${LIBMINC_MINC1_SUPPORT})
SET(HAVE_MINC2 ON)
SET(MINC2 "1")

IF(LIBMINC_MINC1_SUPPORT)
 ADD_DEFINITIONS(-DHAVE_MINC1=1)
ENDIF(LIBMINC_MINC1_SUPPORT)

IF(LIBMINC_BUILD_EZMINC)
  set(LIBMINC_INCLUDE_DIRS_CONFIG    
    ${CMAKE_CURRENT_SOURCE_DIR}/ezminc
  )
  INCLUDE_DIRECTORIES(
    ${CMAKE_CURRENT_SOURCE_DIR}/ezminc
   )
ENDIF(LIBMINC_BUILD_EZMINC)

# 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}/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}
   )

SET(minc_common_SRCS
   libsrc/time_stamp.c
   libsrc/read_file_names.c
   libsrc/ParseArgv.c
   libsrc/restructure.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
)

# 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
   libsrc/voxel_loop.c
   libsrc/hdf_convenience.c
   libsrc/minc_compat.c
   libsrc/minc_simple.c
   libsrc/minc_format_convert.c
   )

SET(minc1_HEADERS
  libsrc/minc.h 
  libsrc/voxel_loop.h 
  libsrc/nd_loop.h
  libsrc/minc_compat.h
  libsrc/minc_simple.h
  libsrc/minc_format_convert.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
   libsrc2/minc2_error.c
   )

SET(minc2_HEADERS
  libsrc2/minc2.h
  libsrc2/minc2_defs.h 
  libsrc2/minc2_structs.h 
  libsrc2/minc2_api.h 
  libsrc2/minc2_error.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
   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
)

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/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(LIBMINC_LIBRARY   ${LIBMINC_EXTERNAL_LIB_PREFIX}minc2)

# a hack for APPLE
IF(LIBMINC_BUILD_SHARED_LIBS)
  SET(LIBMINC_LIBRARY_STATIC ${LIBMINC_EXTERNAL_LIB_PREFIX}minc2_static)
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(UNIX)
  SET(LIBMINC_LIBRARIES ${LIBMINC_LIBRARIES} m dl)
  SET(LIBMINC_STATIC_LIBRARIES ${LIBMINC_STATIC_LIBRARIES} m dl)
ENDIF(UNIX)

SET(minc_LIB_SRCS ${minc2_LIB_SRCS} ${minc_common_SRCS})
SET(minc_HEADERS  ${minc2_HEADERS} ${minc_common_HEADERS})

IF(LIBMINC_MINC1_SUPPORT)
  SET(minc_HEADERS  ${minc_HEADERS}  ${minc1_HEADERS})
  SET(minc_LIB_SRCS ${minc_LIB_SRCS} ${minc1_LIB_SRCS})
ENDIF(LIBMINC_MINC1_SUPPORT)


# Keep this variable for compatibility
SET(VOLUME_IO_LIBRARY ${LIBMINC_EXTERNAL_LIB_PREFIX}minc2)

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(LIBMINC_MINC1_SUPPORT)
  INCLUDE_DIRECTORIES(${NETCDF_INCLUDE_DIR})
  TARGET_LINK_LIBRARIES(${LIBMINC_LIBRARY} ${NETCDF_LIBRARY})
ENDIF(LIBMINC_MINC1_SUPPORT)

EXPORT(TARGETS ${LIBMINC_LIBRARY} FILE "${LIBMINC_EXPORTED_TARGETS}.cmake")

IF(UNIX)
  TARGET_LINK_LIBRARIES(${LIBMINC_LIBRARY}   m dl )

  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 )
    IF(LIBMINC_MINC1_SUPPORT)
      TARGET_LINK_LIBRARIES(${LIBMINC_LIBRARY} ${NETCDF_LIBRARY})
    ENDIF(LIBMINC_MINC1_SUPPORT)
  ENDIF(LIBMINC_BUILD_SHARED_LIBS)
ENDIF(UNIX)

SET_TARGET_PROPERTIES(${LIBMINC_LIBRARY} 
 PROPERTIES 
  SOVERSION ${LIBMINC_SOVERSION})

IF(LIBMINC_MINC1_SUPPORT)
  SET(LIBMINC_LIBRARIES        ${LIBMINC_LIBRARIES} ${NETCDF_LIBRARY} )
  SET(LIBMINC_STATIC_LIBRARIES ${LIBMINC_STATIC_LIBRARIES} ${NETCDF_LIBRARY} )
ENDIF(LIBMINC_MINC1_SUPPORT)

IF( LIBMINC_INSTALL_LIB_DIR )
  INSTALL(
    TARGETS 
      ${LIBMINC_LIBRARY} 
    EXPORT
      ${LIBMINC_EXPORTED_TARGETS} 
    LIBRARY DESTINATION ${LIBMINC_INSTALL_LIB_DIR} COMPONENT libraries
    ARCHIVE DESTINATION ${LIBMINC_INSTALL_LIB_DIR} COMPONENT libraries
    RUNTIME DESTINATION ${LIBMINC_INSTALL_LIB_DIR} COMPONENT libraries
  )
ENDIF( LIBMINC_INSTALL_LIB_DIR )

IF(LIBMINC_INSTALL_INCLUDE_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT)
  INSTALL(FILES   ${minc_HEADERS}      DESTINATION  ${LIBMINC_INSTALL_INCLUDE_DIR} COMPONENT headers )
  INSTALL(FILES   ${volume_io_HEADERS} DESTINATION  ${LIBMINC_INSTALL_INCLUDE_DIR}/volume_io COMPONENT headers)
ENDIF(LIBMINC_INSTALL_INCLUDE_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT)

IF(LIBMINC_MINC1_SUPPORT)
  ADD_SUBDIRECTORY( ezminc )
ENDIF(LIBMINC_MINC1_SUPPORT)

# config for the build directory
SET(LIBMINC_USE_FILE_CONFIG  ${CMAKE_CURRENT_BINARY_DIR}/UseLIBMINC.cmake)

SET(LIBMINC_INCLUDE_DIRS_CONFIG
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}/libsrc2
  ${CMAKE_CURRENT_SOURCE_DIR}/volume_io/Include
  ${CMAKE_CURRENT_SOURCE_DIR}/nifti
)

IF(LIBMINC_MINC1_SUPPORT)
  SET(LIBMINC_INCLUDE_DIRS_CONFIG
    ${LIBMINC_INCLUDE_DIRS_CONFIG}
    ${CMAKE_CURRENT_SOURCE_DIR}/libsrc
    ${CMAKE_CURRENT_SOURCE_DIR}/ezminc
  )
ENDIF(LIBMINC_MINC1_SUPPORT)

SET(EZMINC_LIBRARIES                   minc_io ${LIBMINC_LIBRARIES})
SET(LIBMINC_LIBRARY_DIRS_CONFIG        ${CMAKE_CURRENT_BINARY_DIR})
SET(LIBMINC_LIBRARIES_CONFIG           ${LIBMINC_LIBRARIES})
SET(LIBMINC_STATIC_LIBRARIES_CONFIG    ${LIBMINC_STATIC_LIBRARIES})

IF(LIBMINC_MINC1_SUPPORT)
  SET(LIBMINC_LIBRARY_DIRS_CONFIG  ${LIBMINC_LIBRARY_DIRS_CONFIG} ${CMAKE_CURRENT_BINARY_DIR}/ezminc)
ENDIF(LIBMINC_MINC1_SUPPORT)

configure_file(LIBMINCConfig.cmake.in
  ${CMAKE_CURRENT_BINARY_DIR}/LIBMINCConfig.cmake @ONLY )

configure_file(UseLIBMINC.cmake.in
  ${CMAKE_CURRENT_BINARY_DIR}/UseLIBMINC.cmake @ONLY)

# config for install dir
SET(LIBMINC_USE_FILE_CONFIG    "${CMAKE_INSTALL_PREFIX}/${LIBMINC_INSTALL_LIB_DIR}/Use${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINC.cmake")
SET(LIBMINC_INCLUDE_DIRS_CONFIG ${CMAKE_INSTALL_PREFIX}/${LIBMINC_INSTALL_INCLUDE_DIR} )
SET(LIBMINC_LIBRARY_DIRS_CONFIG ${CMAKE_INSTALL_PREFIX}/${LIBMINC_INSTALL_LIB_DIR})
SET(LIBMINC_STATIC_LIBRARIES_CONFIG   "")
SET(VOLUME_IO_LIBRARY_STATIC "")

#fix for superbuild install
IF(SUPERBUILD_STAGING_PREFIX)
  STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" LIBMINC_INCLUDE_DIRS_CONFIG "${LIBMINC_INCLUDE_DIRS_CONFIG}")
  STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" LIBMINC_LIBRARY_DIRS_CONFIG "${LIBMINC_LIBRARY_DIRS_CONFIG}")
  STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" LIBMINC_LIBRARIES_CONFIG    "${LIBMINC_LIBRARIES_CONFIG}")
  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}/" "" NETCDF_LIBRARY              "${NETCDF_LIBRARY}")
  STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" HDF5_LIBRARY                "${HDF5_LIBRARY}")
  STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" ZLIB_LIBRARY                "${ZLIB_LIBRARY}")
  STRING(REPLACE "${SUPERBUILD_STAGING_PREFIX}/" "" ZLIB_LIBRARIES              "${ZLIB_LIBRARIES}")
ENDIF(SUPERBUILD_STAGING_PREFIX)

configure_file(LIBMINCConfig.cmake.in
  ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINCConfig.cmake @ONLY )

configure_file(UseLIBMINC.cmake.in
  ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Use${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINC.cmake @ONLY)

IF(LIBMINC_INSTALL_LIB_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT)

  INSTALL(
    FILES
     ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Use${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINC.cmake 
     ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINCConfig.cmake
    DESTINATION 
     ${LIBMINC_INSTALL_LIB_DIR}
    COMPONENT Development)
  
ENDIF(LIBMINC_INSTALL_LIB_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT)

# testing
IF(BUILD_TESTING)
  ADD_SUBDIRECTORY(testdir)
ENDIF(BUILD_TESTING)

IF(NOT LIBMINC_EXTERNALLY_CONFIGURED)
  INCLUDE(CPack)
ENDIF(NOT LIBMINC_EXTERNALLY_CONFIGURED)
