# This project is designed to be built outside the source tree.
# File generated by Simon K. Warfield simon.warfield@childrens.harvard.edu
# with support from NIH grant RR021885.
PROJECT(gifticlib)
cmake_minimum_required(VERSION 2.6)

# install destinations
SET(GIFTI_INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin")
SET(GIFTI_INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
SET(GIFTI_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include/gifti")

FIND_PACKAGE(ITK)
IF(ITK_FOUND)
# ITK provides expat and zlib.
   INCLUDE(${ITK_USE_FILE})
   SET(EXPAT_LIBRARIES ITKEXPAT)
   SET(ZLIB_LIBRARIES ITKznz)
   SET(NIFTI_LIBRARIES ITKniftiio)
ELSE(ITK_FOUND)
# Otherwise, get it from elsewhere.
  FIND_PACKAGE(EXPAT)
  FIND_PACKAGE(ZLIB)
  FIND_LIBRARY(NIFTI_LIBRARY NAMES niftiio PATH /usr/local/nifti/lib )
  SET(NIFTI_LIBRARIES ${NIFTI_LIBRARY} znz m)
  FIND_PATH(NIFTI_INCLUDE_DIR nifti1.h /usr/local/nifti/include/nifti
                                       /usr/include/nifti)
  GET_FILENAME_COMPONENT(GIFTI_LINK_DIRECTORIES ${NIFTI_LIBRARY} PATH)
  LINK_DIRECTORIES(${GIFTI_LINK_DIRECTORIES})
  INCLUDE_DIRECTORIES(${NIFTI_INCLUDE_DIR})
ENDIF(ITK_FOUND)

# shared library API versioning -- NOT the same as the release version
SET(GIFTI_SHAREDLIB_VERSION "0.0.0")
STRING( REGEX MATCH "^[0-9]+" GIFTI_SHAREDLIB_SOVERSION ${GIFTI_SHAREDLIB_VERSION})
SET(GIFTI_LIBRARY_PROPERTIES VERSION ${GIFTI_SHAREDLIB_VERSION} SOVERSION ${GIFTI_SHAREDLIB_SOVERSION})

IF(ZLIB_FOUND)
  ADD_DEFINITIONS(-DHAVE_ZLIB)
ENDIF(ZLIB_FOUND)

INCLUDE_DIRECTORIES(
${CRKIT_SOURCE_DIR}/External
${gifticlib_SOURCE_DIR}
${gifticlib_BINARY_DIR}
)

SET(GIFTIIO_SRC gifti_io.c gifti_xml.c)

# shared version
ADD_LIBRARY(giftiio SHARED ${GIFTIIO_SRC})
# Set library version when building shared libs.
SET_TARGET_PROPERTIES(giftiio PROPERTIES ${GIFTI_LIBRARY_PROPERTIES})
TARGET_LINK_LIBRARIES(giftiio ${EXPAT_LIBRARIES} ${NIFTI_LIBRARIES})
IF(ZLIB_FOUND)
  TARGET_LINK_LIBRARIES(giftiio ${ZLIB_LIBRARIES})
ENDIF(ZLIB_FOUND)

# static version
ADD_LIBRARY(giftiio_static STATIC ${GIFTIIO_SRC})
#The library target "via_static" has a default OUTPUT_NAME of "via_static", can be changed with
SET_TARGET_PROPERTIES(giftiio_static PROPERTIES ${GIFTI_LIBRARY_PROPERTIES} OUTPUT_NAME "giftiio")

LINK_DIRECTORIES(${gifticlib_BINARY_DIR})

ADD_EXECUTABLE(gifti_tool gifti_tool.c)
TARGET_LINK_LIBRARIES(gifti_tool giftiio ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES} ${NIFTI_LIBRARIES})

ADD_EXECUTABLE(gifti_test gifti_test.c)
TARGET_LINK_LIBRARIES(gifti_test giftiio ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES} ${NIFTI_LIBRARIES})

# binaries
INSTALL(TARGETS giftiio giftiio_static gifti_tool gifti_test
    RUNTIME DESTINATION ${GIFTI_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
    LIBRARY DESTINATION ${GIFTI_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
    ARCHIVE DESTINATION ${GIFTI_INSTALL_LIB_DIR} COMPONENT Development)

# headers
INSTALL(FILES gifti_io.h gifti_xml.h
    DESTINATION ${GIFTI_INSTALL_INCLUDE_DIR}
    COMPONENT Development)
