| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- # 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 CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
- set(_TIFF_args)
- if (TIFF_FIND_VERSION)
- list(APPEND _TIFF_args
- "${TIFF_FIND_VERSION}")
- if (TIFF_FIND_VERSION_EXACT)
- list(APPEND _TIFF_args
- EXACT)
- endif ()
- endif ()
- set(_TIFF_component_req)
- set(_TIFF_component_opt)
- foreach (_TIFF_component IN LISTS TIFF_FIND_COMPONENTS)
- if (TIFF_FIND_REQUIRE_${_TIFF_component})
- list(APPEND _TIFF_component_req
- "${_TIFF_component}")
- else ()
- list(APPEND _TIFF_component_opt
- "${_TIFF_component}")
- endif ()
- endforeach ()
- unset(_TIFF_component)
- if (_TIFF_component_req)
- list(APPEND _TIFF_args
- COMPONENTS "${_TIFF_component_req}")
- endif ()
- unset(_TIFF_component_req)
- if (_TIFF_component_opt)
- list(APPEND _TIFF_args
- OPTIONAL_COMPONENTS "${_TIFF_component_opt}")
- endif ()
- unset(_TIFF_component_opt)
- # Always find with QUIET to avoid noise when it is not found.
- find_package(Tiff CONFIG QUIET ${_TIFF_args})
- unset(_TIFF_args)
- if (Tiff_FOUND)
- if (NOT TARGET TIFF::TIFF)
- add_library(TIFF::TIFF IMPORTED INTERFACE)
- set_target_properties(TIFF::TIFF PROPERTIES
- INTERFACE_LINK_LIBRARIES TIFF::tiff)
- endif ()
- get_property(TIFF_INCLUDE_DIRS TARGET TIFF::tiff PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
- get_property(TIFF_LIBRARIES TARGET TIFF::tiff PROPERTY INTERFACE_LINK_LIBRARIES)
- get_property(_TIFF_location TARGET TIFF::tiff PROPERTY IMPORTED_IMPLIB)
- if (NOT _TIFF_location)
- get_property(_TIFF_location_release TARGET TIFF::tiff PROPERTY IMPORTED_IMPLIB_RELEASE)
- if (NOT _TIFF_location_release)
- get_property(_TIFF_location_release TARGET TIFF::tiff PROPERTY IMPORTED_IMPLIB_RELWITHDEBINFO)
- endif ()
- get_property(_TIFF_location_debug TARGET TIFF::tiff PROPERTY IMPORTED_IMPLIB_DEBUG)
- if (_TIFF_location_release AND _TIFF_location_debug)
- set(_TIFF_location
- optimized "${_TIFF_location_release}"
- debug "${_TIFF_location_debug}")
- elseif (_TIFF_location_release)
- set(_TIFF_location "${_TIFF_location_release}")
- elseif (_TIFF_location_debug)
- set(_TIFF_location "${_TIFF_location_debug}")
- else ()
- get_property(_TIFF_location_release TARGET TIFF::tiff PROPERTY LOCATION_RELEASE)
- if (NOT _TIFF_location_release)
- get_property(_TIFF_location_release TARGET TIFF::tiff PROPERTY LOCATION_RELWITHDEBINFO)
- endif ()
- get_property(_TIFF_location_debug TARGET TIFF::tiff PROPERTY LOCATION_DEBUG)
- if (_TIFF_location_release AND _TIFF_location_debug)
- set(_TIFF_location
- optimized "${_TIFF_location_release}"
- debug "${_TIFF_location_debug}")
- elseif (_TIFF_location_release)
- set(_TIFF_location "${_TIFF_location_release}")
- elseif (_TIFF_location_debug)
- set(_TIFF_location "${_TIFF_location_debug}")
- else ()
- get_property(_TIFF_location TARGET TIFF::tiff PROPERTY LOCATION)
- endif ()
- endif ()
- unset(_TIFF_location_release)
- unset(_TIFF_location_debug)
- endif ()
- list(INSERT TIFF_LIBRARIES 0
- "${_TIFF_location}")
- unset(_TIFF_location)
- set(TIFF_FOUND 1)
- if("CXX" IN_LIST TIFF_FIND_COMPONENTS)
- if (TARGET TIFF::CXX)
- get_property(_TIFF_CXX_location TARGET TIFF::CXX PROPERTY IMPORTED_IMPLIB)
- if (NOT _TIFF_CXX_location)
- get_property(_TIFF_CXX_location_release TARGET TIFF::CXX PROPERTY IMPORTED_IMPLIB_RELEASE)
- if (NOT _TIFF_CXX_location_release)
- get_property(_TIFF_CXX_location_release TARGET TIFF::CXX PROPERTY IMPORTED_IMPLIB_RELWITHDEBINFO)
- endif ()
- get_property(_TIFF_CXX_location_debug TARGET TIFF::CXX PROPERTY IMPORTED_IMPLIB_DEBUG)
- if (_TIFF_CXX_location_release AND _TIFF_CXX_location_debug)
- set(_TIFF_CXX_location
- optimized "${_TIFF_CXX_location_release}"
- debug "${_TIFF_CXX_location_debug}")
- elseif (_TIFF_CXX_location_release)
- set(_TIFF_CXX_location "${_TIFF_CXX_location_release}")
- elseif (_TIFF_CXX_location_debug)
- set(_TIFF_CXX_location "${_TIFF_CXX_location_debug}")
- else ()
- get_property(_TIFF_CXX_location_release TARGET TIFF::CXX PROPERTY LOCATION_RELEASE)
- if (NOT _TIFF_CXX_location_release)
- get_property(_TIFF_CXX_location_release TARGET TIFF::CXX PROPERTY LOCATION_RELWITHDEBINFO)
- endif ()
- get_property(_TIFF_CXX_location_debug TARGET TIFF::CXX PROPERTY LOCATION_DEBUG)
- if (_TIFF_CXX_location_release AND _TIFF_CXX_location_debug)
- set(_TIFF_CXX_location
- optimized "${_TIFF_CXX_location_release}"
- debug "${_TIFF_CXX_location_debug}")
- elseif (_TIFF_CXX_location_release)
- set(_TIFF_CXX_location "${_TIFF_CXX_location_release}")
- elseif (_TIFF_CXX_location_debug)
- set(_TIFF_CXX_location "${_TIFF_CXX_location_debug}")
- else ()
- get_property(_TIFF_CXX_location TARGET TIFF::CXX PROPERTY LOCATION)
- endif ()
- endif ()
- unset(_TIFF_CXX_location_release)
- unset(_TIFF_CXX_location_debug)
- endif ()
- list(INSERT TIFF_LIBRARIES 0
- "${_TIFF_CXX_location}")
- unset(_TIFF_CXX_location)
- set(TIFF_CXX_FOUND 1)
- else ()
- set(TIFF_CXX_FOUND 0)
- if (TIFF_FIND_REQUIRED_CXX)
- set(TIFF_FOUND 0)
- list(APPEND TIFF_NOT_FOUND_REASON
- "No C++ bindings target found")
- endif ()
- endif ()
- endif ()
- set(TIFF_VERSION_STRING "${Tiff_VERSION}")
- foreach (_TIFF_component IN LISTS TIFF_FIND_COMPONENTS)
- set(TIFF_${_TIFF_component}_FOUND "${Tiff_${_TIFF_component}_FOUND}")
- endforeach ()
- unset(_TIFF_component)
- include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
- find_package_handle_standard_args(TIFF
- HANDLE_COMPONENTS
- REQUIRED_VARS Tiff_DIR
- VERSION_VAR TIFF_VERSION_STRING)
- cmake_policy(POP)
- return ()
- endif ()
- 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)
|