| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file Copyright.txt or https://cmake.org/licensing for details. | |
| #[=======================================================================[.rst: | |
| FindTIFF | |
| -------- | |
| Find the TIFF library (``libtiff``, https://libtiff.gitlab.io/libtiff/). | |
| Optional COMPONENTS | |
| ^^^^^^^^^^^^^^^^^^^ | |
| This module supports the optional component `CXX`, for use with the COMPONENTS | |
| argument of the :command:`find_package` command. This component has an associated | |
| imported target, as described below. | |
| Imported targets | |
| ^^^^^^^^^^^^^^^^ | |
| .. versionadded:: 3.5 | |
| This module defines the following :prop_tgt:`IMPORTED` targets: | |
| ``TIFF::TIFF`` | |
| The TIFF library, if found. | |
| ``TIFF::CXX`` | |
| .. versionadded:: 3.19 | |
| The C++ wrapper libtiffxx, if requested by the `COMPONENTS CXX` option, | |
| if the compiler is not MSVC (which includes the C++ wrapper in libtiff), | |
| and if found. | |
| Result variables | |
| ^^^^^^^^^^^^^^^^ | |
| This module will set the following variables in your project: | |
| ``TIFF_FOUND`` | |
| true if the TIFF headers and libraries were found | |
| ``TIFF_INCLUDE_DIR`` | |
| the directory containing the TIFF headers | |
| ``TIFF_INCLUDE_DIRS`` | |
| the directory containing the TIFF headers | |
| ``TIFF_LIBRARIES`` | |
| TIFF libraries to be linked | |
| Cache variables | |
| ^^^^^^^^^^^^^^^ | |
| The following cache variables may also be set: | |
| ``TIFF_INCLUDE_DIR`` | |
| the directory containing the TIFF headers | |
| ``TIFF_LIBRARY_RELEASE`` | |
| the path to the TIFF library for release configurations | |
| ``TIFF_LIBRARY_DEBUG`` | |
| the path to the TIFF library for debug configurations | |
| ``TIFFXX_LIBRARY_RELEASE`` | |
| the path to the TIFFXX library for release configurations | |
| ``TIFFXX_LIBRARY_DEBUG`` | |
| the path to the TIFFXX library for debug configurations | |
| .. versionadded:: 3.4 | |
| Debug and Release variants are found separately. | |
| #]=======================================================================] | |
| cmake_policy(PUSH) | |
| cmake_policy(SET CMP0057 NEW) | |
| find_path(TIFF_INCLUDE_DIR tiff.h) | |
| set(TIFF_NAMES ${TIFF_NAMES} tiff libtiff tiff3 libtiff3) | |
| foreach(name ${TIFF_NAMES}) | |
| list(APPEND TIFF_NAMES_DEBUG "${name}d") | |
| endforeach() | |
| if(NOT TIFF_LIBRARY) | |
| find_library(TIFF_LIBRARY_RELEASE NAMES ${TIFF_NAMES}) | |
| find_library(TIFF_LIBRARY_DEBUG NAMES ${TIFF_NAMES_DEBUG}) | |
| include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) | |
| select_library_configurations(TIFF) | |
| mark_as_advanced(TIFF_LIBRARY_RELEASE TIFF_LIBRARY_DEBUG) | |
| endif() | |
| if(TIFF_INCLUDE_DIR AND EXISTS "${TIFF_INCLUDE_DIR}/tiffvers.h") | |
| file(STRINGS "${TIFF_INCLUDE_DIR}/tiffvers.h" tiff_version_str | |
| REGEX "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version .*") | |
| string(REGEX REPLACE "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version +([^ \\n]*).*" | |
| "\\1" TIFF_VERSION_STRING "${tiff_version_str}") | |
| unset(tiff_version_str) | |
| endif() | |
| foreach(_comp IN LISTS TIFF_FIND_COMPONENTS) | |
| if(_comp STREQUAL "CXX") | |
| if(MSVC) | |
| # C++ bindings are built into the main tiff library. | |
| set(TIFF_CXX_FOUND 1) | |
| else() | |
| foreach(name ${TIFF_NAMES}) | |
| list(APPEND TIFFXX_NAMES "${name}xx") | |
| list(APPEND TIFFXX_NAMES_DEBUG "${name}xxd") | |
| endforeach() | |
| find_library(TIFFXX_LIBRARY_RELEASE NAMES ${TIFFXX_NAMES}) | |
| find_library(TIFFXX_LIBRARY_DEBUG NAMES ${TIFFXX_NAMES_DEBUG}) | |
| include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) | |
| select_library_configurations(TIFFXX) | |
| mark_as_advanced(TIFFXX_LIBRARY_RELEASE TIFFXX_LIBRARY_DEBUG) | |
| unset(TIFFXX_NAMES) | |
| unset(TIFFXX_NAMES_DEBUG) | |
| if(TIFFXX_LIBRARY) | |
| set(TIFF_CXX_FOUND 1) | |
| endif() | |
| endif() | |
| endif() | |
| endforeach() | |
| unset(_comp) | |
| unset(TIFF_NAMES) | |
| unset(TIFF_NAMES_DEBUG) | |
| include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) | |
| FIND_PACKAGE_HANDLE_STANDARD_ARGS(TIFF | |
| HANDLE_COMPONENTS | |
| REQUIRED_VARS TIFF_LIBRARY TIFF_INCLUDE_DIR | |
| VERSION_VAR TIFF_VERSION_STRING) | |
| if(TIFF_FOUND) | |
| set(TIFF_LIBRARIES ${TIFF_LIBRARY}) | |
| if("CXX" IN_LIST TIFF_FIND_COMPONENTS AND NOT MSVC) | |
| list(APPEND TIFF_LIBRARIES ${TIFFXX_LIBRARY}) | |
| endif() | |
| set(TIFF_INCLUDE_DIRS "${TIFF_INCLUDE_DIR}") | |
| if(NOT TARGET TIFF::TIFF) | |
| add_library(TIFF::TIFF UNKNOWN IMPORTED) | |
| if(TIFF_INCLUDE_DIRS) | |
| set_target_properties(TIFF::TIFF PROPERTIES | |
| INTERFACE_INCLUDE_DIRECTORIES "${TIFF_INCLUDE_DIRS}") | |
| endif() | |
| if(EXISTS "${TIFF_LIBRARY}") | |
| set_target_properties(TIFF::TIFF PROPERTIES | |
| IMPORTED_LINK_INTERFACE_LANGUAGES "C" | |
| IMPORTED_LOCATION "${TIFF_LIBRARY}") | |
| endif() | |
| if(EXISTS "${TIFF_LIBRARY_RELEASE}") | |
| set_property(TARGET TIFF::TIFF APPEND PROPERTY | |
| IMPORTED_CONFIGURATIONS RELEASE) | |
| set_target_properties(TIFF::TIFF PROPERTIES | |
| IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" | |
| IMPORTED_LOCATION_RELEASE "${TIFF_LIBRARY_RELEASE}") | |
| endif() | |
| if(EXISTS "${TIFF_LIBRARY_DEBUG}") | |
| set_property(TARGET TIFF::TIFF APPEND PROPERTY | |
| IMPORTED_CONFIGURATIONS DEBUG) | |
| set_target_properties(TIFF::TIFF PROPERTIES | |
| IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C" | |
| IMPORTED_LOCATION_DEBUG "${TIFF_LIBRARY_DEBUG}") | |
| endif() | |
| endif() | |
| if(NOT TARGET TIFF::CXX) | |
| if(MSVC) | |
| add_library(TIFF::CXX INTERFACE IMPORTED) | |
| set_property(TARGET TIFF::CXX PROPERTY INTERFACE_LINK_LIBRARIES TIFF::TIFF) | |
| else() | |
| add_library(TIFF::CXX UNKNOWN IMPORTED) | |
| set_property(TARGET TIFF::CXX PROPERTY INTERFACE_LINK_LIBRARIES TIFF::TIFF) | |
| if(TIFF_INCLUDE_DIRS) | |
| set_target_properties(TIFF::CXX PROPERTIES | |
| INTERFACE_INCLUDE_DIRECTORIES "${TIFF_INCLUDE_DIRS}") | |
| endif() | |
| if(EXISTS "${TIFFXX_LIBRARY}") | |
| set_target_properties(TIFF::CXX PROPERTIES | |
| IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" | |
| IMPORTED_LOCATION "${TIFFXX_LIBRARY}") | |
| endif() | |
| if(EXISTS "${TIFFXX_LIBRARY_RELEASE}") | |
| set_property(TARGET TIFF::CXX APPEND PROPERTY | |
| IMPORTED_CONFIGURATIONS RELEASE) | |
| set_target_properties(TIFF::CXX PROPERTIES | |
| IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |
| IMPORTED_LOCATION_RELEASE "${TIFFXX_LIBRARY_RELEASE}") | |
| endif() | |
| if(EXISTS "${TIFFXX_LIBRARY_DEBUG}") | |
| set_property(TARGET TIFF::CXX APPEND PROPERTY | |
| IMPORTED_CONFIGURATIONS DEBUG) | |
| set_target_properties(TIFF::CXX PROPERTIES | |
| IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX" | |
| IMPORTED_LOCATION_DEBUG "${TIFFXX_LIBRARY_DEBUG}") | |
| endif() | |
| endif() | |
| endif() | |
| endif() | |
| mark_as_advanced(TIFF_INCLUDE_DIR) | |
| cmake_policy(POP) |