-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
207 additions
and
118 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
# SPDX-FileCopyrightText: 2018 Christophe Giboudeaux <[email protected]> | ||
# SPDX-FileCopyrightText: 2010 Alexander Neundorf <[email protected]> | ||
# SPDX-FileCopyrightText: 2008 Gilles Caulier <[email protected]> | ||
# | ||
# SPDX-License-Identifier: BSD-3-Clause | ||
|
||
#[=======================================================================[.rst: | ||
FindLibExiv2 | ||
------------ | ||
Try to find the Exiv2 library. | ||
This will define the following variables: | ||
``LibExiv2_FOUND`` | ||
True if (the requested version of) Exiv2 is available | ||
``LibExiv2_VERSION`` | ||
The version of Exiv2 | ||
``LibExiv2_INCLUDE_DIRS`` | ||
The include dirs of Exiv2 for use with target_include_directories() | ||
``LibExiv2_LIBRARIES`` | ||
The Exiv2 library for use with target_link_libraries(). | ||
This can be passed to target_link_libraries() instead of | ||
the ``LibExiv2::LibExiv2`` target | ||
If ``LibExiv2_FOUND`` is TRUE, it will also define the following imported | ||
target: | ||
``LibExiv2::LibExiv2`` | ||
The Exiv2 library | ||
In general we recommend using the imported target, as it is easier to use. | ||
Bear in mind, however, that if the target is in the link interface of an | ||
exported library, it must be made available by the package config file. | ||
Since 5.53.0. | ||
#]=======================================================================] | ||
|
||
# find_package(exiv2 REQUIRED CONFIG NAMES exiv2) | ||
find_package(PkgConfig QUIET) | ||
pkg_check_modules(PC_EXIV2 QUIET exiv2) | ||
|
||
find_path(LibExiv2_INCLUDE_DIRS NAMES exiv2/exif.hpp | ||
HINTS ${PC_EXIV2_INCLUDEDIR} | ||
) | ||
|
||
find_library(LibExiv2_LIBRARIES NAMES exiv2 libexiv2 | ||
HINTS ${PC_EXIV2_LIBRARY_DIRS} | ||
) | ||
|
||
set(LibExiv2_VERSION ${PC_EXIV2_VERSION}) | ||
|
||
if(NOT LibExiv2_VERSION AND DEFINED LibExiv2_INCLUDE_DIRS) | ||
# With exiv >= 0.27, the version #defines are in exv_conf.h instead of version.hpp | ||
foreach(_exiv2_version_file "version.hpp" "exv_conf.h") | ||
if(EXISTS "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}") | ||
file(READ "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}" _exiv_version_file_content) | ||
string(REGEX MATCH "#define EXIV2_MAJOR_VERSION[ ]+\\([0-9]+U?\\)" EXIV2_MAJOR_VERSION_MATCH ${_exiv_version_file_content}) | ||
string(REGEX MATCH "#define EXIV2_MINOR_VERSION[ ]+\\([0-9]+U?\\)" EXIV2_MINOR_VERSION_MATCH ${_exiv_version_file_content}) | ||
string(REGEX MATCH "#define EXIV2_PATCH_VERSION[ ]+\\([0-9]+U?\\)" EXIV2_PATCH_VERSION_MATCH ${_exiv_version_file_content}) | ||
if(EXIV2_MAJOR_VERSION_MATCH) | ||
string(REGEX REPLACE ".*_MAJOR_VERSION[ ]+\\(([0-9]*)U?\\)" "\\1" EXIV2_MAJOR_VERSION ${EXIV2_MAJOR_VERSION_MATCH}) | ||
string(REGEX REPLACE ".*_MINOR_VERSION[ ]+\\(([0-9]*)U?\\)" "\\1" EXIV2_MINOR_VERSION ${EXIV2_MINOR_VERSION_MATCH}) | ||
string(REGEX REPLACE ".*_PATCH_VERSION[ ]+\\(([0-9]*)U?\\)" "\\1" EXIV2_PATCH_VERSION ${EXIV2_PATCH_VERSION_MATCH}) | ||
endif() | ||
endif() | ||
endforeach() | ||
|
||
set(LibExiv2_VERSION "${EXIV2_MAJOR_VERSION}.${EXIV2_MINOR_VERSION}.${EXIV2_PATCH_VERSION}") | ||
endif() | ||
|
||
include(FindPackageHandleStandardArgs) | ||
find_package_handle_standard_args(LibExiv2 | ||
FOUND_VAR LibExiv2_FOUND | ||
REQUIRED_VARS LibExiv2_LIBRARIES LibExiv2_INCLUDE_DIRS | ||
VERSION_VAR LibExiv2_VERSION | ||
) | ||
|
||
mark_as_advanced(LibExiv2_INCLUDE_DIRS LibExiv2_LIBRARIES) | ||
|
||
if(LibExiv2_FOUND AND NOT TARGET LibExiv2::LibExiv2) | ||
add_library(LibExiv2::LibExiv2 UNKNOWN IMPORTED) | ||
set_target_properties(LibExiv2::LibExiv2 PROPERTIES | ||
IMPORTED_LOCATION "${LibExiv2_LIBRARIES}" | ||
INTERFACE_INCLUDE_DIRECTORIES "${LibExiv2_INCLUDE_DIRS}" | ||
) | ||
if (LibExiv2_VERSION VERSION_LESS 0.28.0) | ||
# exiv2 0.27 or older still uses std::auto_ptr, which is no longer available | ||
# by default when using newer C++ versions | ||
set_target_properties(LibExiv2::LibExiv2 PROPERTIES | ||
INTERFACE_COMPILE_DEFINITIONS "_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR=1;_HAS_AUTO_PTR_ETC=1" | ||
) | ||
endif() | ||
endif() | ||
|
||
include(FeatureSummary) | ||
set_package_properties(LibExiv2 PROPERTIES | ||
URL "https://www.exiv2.org" | ||
DESCRIPTION "Image metadata support" | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.