# ============================================================================
# Copyright (c) 2011-2012 University of Pennsylvania
# Copyright (c) 2013-2014 Andreas Schuh
# All rights reserved.
#
# See COPYING file for license information or visit
# http://opensource.andreasschuh.com/cmake-basis/download.html#license
# ============================================================================
##############################################################################
# @file FindNiftiCLib.cmake
# @brief Find nifticlib package.
#
# @par Input variables:
#
#
# @tp @b NiftiCLib_DIR @endtp
# The nifticlib package files are searched under the specified root
# directory. If they are not found there, the default search paths
# are considered. This variable can also be set as environment variable. |
#
#
# @tp @b NIFTICLIB_DIR @endtp
# Alternative environment variable for @p NiftiCLib_DIR. |
#
#
# @tp @b NiftiCLib_USE_STATIC_LIB @endtp
# Forces this module to search for the static library. Otherwise,
# the shared library is preferred. |
#
#
#
# @par Output variables:
#
#
# @tp @b NiftiCLib_FOUND @endtp
# Whether the nifticlib package was found and the following CMake
# variables are valid. |
#
#
# @tp @b NiftiCLib_INCLUDE_DIR @endtp
# Cached include directory/ies. |
#
#
# @tp @b NiftiCLib_INCLUDE_DIRS @endtp
# Alias for @p NiftiCLib_INCLUDE_DIR (not cached). |
#
#
# @tp @b NiftiCLib_INCLUDES @endtp
# Alias for @p NiftiCLib_INCLUDE_DIR (not cached). |
#
#
# @tp @b NiftiCLib_LIBRARY @endtp
# Path of @c niftiio library. |
#
#
# @tp @b NiftiCLib_LIB @endtp
# Alias for @p NiftiCLib_LIBRARY (not cached). |
#
#
# @tp @b NiftiCLib_LIBRARIES @endtp
# Path of @c niftiio library and prerequisite libraries. |
#
#
#
# @par Imported targets:
#
#
# @tp @b niftiio @endtp
# The library target of the @c nifticlib library. |
#
#
#
# @ingroup CMakeFindModules
##############################################################################
# ----------------------------------------------------------------------------
# initialize search
if (NOT NiftiCLib_DIR)
if (NOT "$ENV{NIFTICLIB_DIR}" STREQUAL "")
set (NiftiCLib_DIR "$ENV{NIFTICLIB_DIR}" CACHE PATH "Installation prefix for NiftiCLib." FORCE)
else ()
set (NiftiCLib_DIR "$ENV{NiftiCLib_DIR}" CACHE PATH "Installation prefix for NiftiCLib." FORCE)
endif ()
endif ()
set (NiftiCLib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
if (NiftiCLib_USE_STATIC_LIB)
if (WIN32)
set (CMAKE_FIND_LIBRARY_SUFFIXES .lib)
else ()
set (CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif()
else ()
if (WIN32)
set (CMAKE_FIND_LIBRARY_SUFFIXES .dll .lib)
elseif(APPLE)
set (CMAKE_FIND_LIBRARY_SUFFIXES .dylib .a)
else ()
set (CMAKE_FIND_LIBRARY_SUFFIXES .so .a)
endif()
endif ()
# ----------------------------------------------------------------------------
# find paths/files
if (NiftiCLib_DIR)
find_path (
NiftiCLib_INCLUDE_DIR
NAMES nifti/nifti1_io.h
HINTS ${NiftiCLib_DIR}
PATH_SUFFIXES "include"
DOC "path to directory containing nifti1_io.h file."
NO_DEFAULT_PATH
)
find_library (
NiftiCLib_LIBRARY
NAMES niftiio
HINTS ${NiftiCLib_DIR}
PATH_SUFFIXES lib
DOC "Path of niftiio library"
NO_DEFAULT_PATH
)
find_library (
NiftiCLib_znz_LIBRARY
NAMES znz
HINTS ENV LD_LIBRARY_PATH
DOC "Path of znz library"
)
else ()
find_path (
NiftiCLib_INCLUDE_DIR
NAMES nifti/nifti1_io.h
HINTS ENV C_INCLUDE_PATH ENV CXX_INCLUDE_PATH
DOC "path to directory containing nifti1_io.h file."
)
find_library (
NiftiCLib_LIBRARY
NAMES niftiio
HINTS ENV LD_LIBRARY_PATH
DOC "Path of niftiio library"
)
find_library (
NiftiCLib_znz_LIBRARY
NAMES znz
HINTS ENV LD_LIBRARY_PATH
DOC "Path of znz library"
)
endif ()
mark_as_advanced (NiftiCLib_INCLUDE_DIR)
mark_as_advanced (NiftiCLib_LIBRARY)
mark_as_advanced (NiftiCLib_znz_LIBRARY)
# ----------------------------------------------------------------------------
# prerequisites
if (NiftiCLib_USE_STATIC_LIB OR NiftiCLib_znz_LIBRARY MATCHES "\\.a$")
find_package (ZLIB REQUIRED)
endif ()
set (NiftiCLib_LIBRARIES "${ZLIB_LIBRARIES}")
if (NiftiCLib_znz_LIBRARY)
list (APPEND NiftiCLib_LIBRARIES "${NiftiCLib_znz_LIBRARY}")
endif ()
if (NiftiCLib_LIBRARY)
list (APPEND NiftiCLib_LIBRARIES "${NiftiCLib_LIBRARY}")
endif ()
# ----------------------------------------------------------------------------
# import targets
if (NiftiCLib_znz_LIBRARY)
if (NiftiCLib_USE_STATIC_LIB OR NiftiCLib_znz_LIBRARY MATCHES "\\.a$")
add_library (niftiznz STATIC IMPORTED)
else ()
add_library (niftiznz SHARED IMPORTED)
endif ()
set_target_properties (
niftiznz
PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
IMPORTED_LOCATION "${NiftiCLib_znz_LIBRARY}"
IMPORTED_LINK_INTERFACE_LIBRARIES "${ZLIB_LIBRARIES}"
)
endif ()
if (NiftiCLib_LIBRARY)
if (NiftiCLib_USE_STATIC_LIB OR NiftiCLib_LIBRARY MATCHES "\\.a$")
add_library (niftiio STATIC IMPORTED)
else ()
add_library (niftiio SHARED IMPORTED)
endif ()
set_target_properties (
niftiio
PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
IMPORTED_LOCATION "${NiftiCLib_LIBRARY}"
)
if (TARGET niftiznz)
set_target_properties (niftiio PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES niftiznz)
endif ()
endif ()
# ----------------------------------------------------------------------------
# aliases / backwards compatibility
if (NiftiCLib_INCLUDE_DIR)
set (NiftiCLib_INCLUDE_DIRS "${NiftiCLib_INCLUDE_DIR}")
if (NOT NiftiCLib_INCLUDE_DIR MATCHES "/nifti/?$")
list (APPEND NiftiCLib_INCLUDE_DIRS "${NiftiCLib_INCLUDE_DIR}/nifti")
endif ()
set (NiftiCLib_INCLUDES "${NiftiCLib_INCLUDE_DIRS}")
endif ()
if (NiftiCLib_LIBRARY)
set (NiftiCLib_LIB "${NiftiCLib_LIBRARY}")
endif ()
# ----------------------------------------------------------------------------
# reset CMake variables
set (CMAKE_FIND_LIBRARY_SUFFIXES ${NiftiCLib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
# ----------------------------------------------------------------------------
# handle the QUIETLY and REQUIRED arguments and set *_FOUND to TRUE
# if all listed variables are found or TRUE
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (
NiftiCLib
REQUIRED_VARS
NiftiCLib_INCLUDE_DIR
NiftiCLib_LIBRARY
NiftiCLib_znz_LIBRARY
)
set (NiftiCLib_FOUND ${NIFTICLIB_FOUND})
# ----------------------------------------------------------------------------
# set NiftiCLib_DIR
if (NOT NiftiCLib_DIR AND NiftiCLib_FOUND)
string (REGEX REPLACE "include(/nifti)?/?" "" NiftiCLib_PREFIX "${NiftiCLib_INCLUDE_DIR}")
set (NiftiCLib_DIR "${NiftiCLib_PREFIX}" CACHE PATH "Installation prefix for NiftiCLib." FORCE)
unset (NiftiCLib_PREFIX)
endif ()