summaryrefslogtreecommitdiff
path: root/Modules/FindTIFF.cmake
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2021-10-08 09:20:25 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2021-10-08 09:20:25 +0900
commit50e508f0913d5580aa156327527da3d29a66b90c (patch)
treed581ffbad59a2becc33bc79e75e504de500a8e93 /Modules/FindTIFF.cmake
parent37869418c616f7e57c34b9287c4c8f3671df20de (diff)
downloadcmake-50e508f0913d5580aa156327527da3d29a66b90c.tar.gz
cmake-50e508f0913d5580aa156327527da3d29a66b90c.tar.bz2
cmake-50e508f0913d5580aa156327527da3d29a66b90c.zip
Imported Upstream version 3.19.0upstream/3.19.0
Diffstat (limited to 'Modules/FindTIFF.cmake')
-rw-r--r--Modules/FindTIFF.cmake99
1 files changed, 93 insertions, 6 deletions
diff --git a/Modules/FindTIFF.cmake b/Modules/FindTIFF.cmake
index 00a3a415a..3b74c94f0 100644
--- a/Modules/FindTIFF.cmake
+++ b/Modules/FindTIFF.cmake
@@ -5,7 +5,14 @@
FindTIFF
--------
-Find the TIFF library (``libtiff``).
+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
^^^^^^^^^^^^^^^^
@@ -15,6 +22,11 @@ This module defines the following :prop_tgt:`IMPORTED` targets:
``TIFF::TIFF``
The TIFF library, if found.
+``TIFF::CXX``
+ 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
^^^^^^^^^^^^^^^^
@@ -36,10 +48,19 @@ The following cache variables may also be set:
``TIFF_INCLUDE_DIR``
the directory containing the TIFF headers
-``TIFF_LIBRARY``
- the path to the TIFF library
+``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
#]=======================================================================]
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW)
+
find_path(TIFF_INCLUDE_DIR tiff.h)
set(TIFF_NAMES ${TIFF_NAMES} tiff libtiff tiff3 libtiff3)
@@ -54,8 +75,6 @@ if(NOT TIFF_LIBRARY)
select_library_configurations(TIFF)
mark_as_advanced(TIFF_LIBRARY_RELEASE TIFF_LIBRARY_DEBUG)
endif()
-unset(TIFF_NAMES)
-unset(TIFF_NAMES_DEBUG)
if(TIFF_INCLUDE_DIR AND EXISTS "${TIFF_INCLUDE_DIR}/tiffvers.h")
file(STRINGS "${TIFF_INCLUDE_DIR}/tiffvers.h" tiff_version_str
@@ -66,13 +85,46 @@ if(TIFF_INCLUDE_DIR AND EXISTS "${TIFF_INCLUDE_DIR}/tiffvers.h")
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)
@@ -101,6 +153,41 @@ if(TIFF_FOUND)
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 TIFF_LIBRARY)
+mark_as_advanced(TIFF_INCLUDE_DIR)
+cmake_policy(POP)