Warning, /frameworks/extra-cmake-modules/find-modules/FindLibExiv2.cmake is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2018 Christophe Giboudeaux <christophe@krop.fr>
0002 # SPDX-FileCopyrightText: 2010 Alexander Neundorf <neundorf@kde.org>
0003 # SPDX-FileCopyrightText: 2008 Gilles Caulier <caulier.gilles@gmail.com>
0004 #
0005 # SPDX-License-Identifier: BSD-3-Clause
0006
0007 #[=======================================================================[.rst:
0008 FindLibExiv2
0009 ------------
0010
0011 Try to find the Exiv2 library.
0012
0013 This will define the following variables:
0014
0015 ``LibExiv2_FOUND``
0016 True if (the requested version of) Exiv2 is available
0017
0018 ``LibExiv2_VERSION``
0019 The version of Exiv2
0020
0021 ``LibExiv2_INCLUDE_DIRS``
0022 The include dirs of Exiv2 for use with target_include_directories()
0023
0024 ``LibExiv2_LIBRARIES``
0025 The Exiv2 library for use with target_link_libraries().
0026 This can be passed to target_link_libraries() instead of
0027 the ``LibExiv2::LibExiv2`` target
0028
0029 If ``LibExiv2_FOUND`` is TRUE, it will also define the following imported
0030 target:
0031
0032 ``LibExiv2::LibExiv2``
0033 The Exiv2 library
0034
0035 In general we recommend using the imported target, as it is easier to use.
0036 Bear in mind, however, that if the target is in the link interface of an
0037 exported library, it must be made available by the package config file.
0038
0039 Since 5.53.0.
0040 #]=======================================================================]
0041
0042 find_package(PkgConfig QUIET)
0043 pkg_check_modules(PC_EXIV2 QUIET exiv2)
0044
0045 find_path(LibExiv2_INCLUDE_DIRS NAMES exiv2/exif.hpp
0046 HINTS ${PC_EXIV2_INCLUDEDIR}
0047 )
0048
0049 find_library(LibExiv2_LIBRARIES NAMES exiv2 libexiv2
0050 HINTS ${PC_EXIV2_LIBRARY_DIRS}
0051 )
0052
0053 set(LibExiv2_VERSION ${PC_EXIV2_VERSION})
0054
0055 if(NOT LibExiv2_VERSION AND DEFINED LibExiv2_INCLUDE_DIRS)
0056 # With exiv >= 0.27, the version #defines are in exv_conf.h instead of version.hpp
0057 foreach(_exiv2_version_file "version.hpp" "exv_conf.h")
0058 if(EXISTS "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}")
0059 file(READ "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}" _exiv_version_file_content)
0060 string(REGEX MATCH "#define EXIV2_MAJOR_VERSION[ ]+\\([0-9]+\\)" EXIV2_MAJOR_VERSION_MATCH ${_exiv_version_file_content})
0061 string(REGEX MATCH "#define EXIV2_MINOR_VERSION[ ]+\\([0-9]+\\)" EXIV2_MINOR_VERSION_MATCH ${_exiv_version_file_content})
0062 string(REGEX MATCH "#define EXIV2_PATCH_VERSION[ ]+\\([0-9]+\\)" EXIV2_PATCH_VERSION_MATCH ${_exiv_version_file_content})
0063 if(EXIV2_MAJOR_VERSION_MATCH)
0064 string(REGEX REPLACE ".*_MAJOR_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_MAJOR_VERSION ${EXIV2_MAJOR_VERSION_MATCH})
0065 string(REGEX REPLACE ".*_MINOR_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_MINOR_VERSION ${EXIV2_MINOR_VERSION_MATCH})
0066 string(REGEX REPLACE ".*_PATCH_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_PATCH_VERSION ${EXIV2_PATCH_VERSION_MATCH})
0067 endif()
0068 endif()
0069 endforeach()
0070
0071 set(LibExiv2_VERSION "${EXIV2_MAJOR_VERSION}.${EXIV2_MINOR_VERSION}.${EXIV2_PATCH_VERSION}")
0072 endif()
0073
0074 include(FindPackageHandleStandardArgs)
0075 find_package_handle_standard_args(LibExiv2
0076 FOUND_VAR LibExiv2_FOUND
0077 REQUIRED_VARS LibExiv2_LIBRARIES LibExiv2_INCLUDE_DIRS
0078 VERSION_VAR LibExiv2_VERSION
0079 )
0080
0081 mark_as_advanced(LibExiv2_INCLUDE_DIRS LibExiv2_LIBRARIES)
0082
0083 if(LibExiv2_FOUND AND NOT TARGET LibExiv2::LibExiv2)
0084 add_library(LibExiv2::LibExiv2 UNKNOWN IMPORTED)
0085 set_target_properties(LibExiv2::LibExiv2 PROPERTIES
0086 IMPORTED_LOCATION "${LibExiv2_LIBRARIES}"
0087 INTERFACE_INCLUDE_DIRECTORIES "${LibExiv2_INCLUDE_DIRS}"
0088 )
0089 if (LibExiv2_VERSION VERSION_LESS 0.28.0)
0090 # exiv2 0.27 or older still uses std::auto_ptr, which is no longer available
0091 # by default when using newer C++ versions
0092 set_target_properties(LibExiv2::LibExiv2 PROPERTIES
0093 INTERFACE_COMPILE_DEFINITIONS "_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR=1;_HAS_AUTO_PTR_ETC=1"
0094 )
0095 endif()
0096 endif()
0097
0098 include(FeatureSummary)
0099 set_package_properties(LibExiv2 PROPERTIES
0100 URL "https://www.exiv2.org"
0101 DESCRIPTION "Image metadata support"
0102 )