aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Giboudeaux <christophe@krop.fr>2018-11-20 13:27:21 +0100
committerChristophe Giboudeaux <christophe@krop.fr>2018-11-20 13:27:21 +0100
commitfe22302d2d4dbf2d47f27e36814cd10784d97a41 (patch)
treebb3aaaea387cae46facb7990e866c558a0080c9f
parent06061b0e3ce4342b5cbb1c0e6c8d285b524e30f0 (diff)
downloadextra-cmake-modules-fe22302d2d4dbf2d47f27e36814cd10784d97a41.tar.gz
extra-cmake-modules-fe22302d2d4dbf2d47f27e36814cd10784d97a41.tar.bz2
Add FindExiv2.cmake to ECM
According to lxr, we have 8 copies of this module in different repositories (+kdelib4support and a playground repo).
-rw-r--r--attic/modules/FindExiv2.cmake80
-rw-r--r--docs/find-module/FindExiv2.rst1
-rw-r--r--find-modules/FindExiv2.cmake121
3 files changed, 122 insertions, 80 deletions
diff --git a/attic/modules/FindExiv2.cmake b/attic/modules/FindExiv2.cmake
deleted file mode 100644
index 2c4cbb7e..00000000
--- a/attic/modules/FindExiv2.cmake
+++ /dev/null
@@ -1,80 +0,0 @@
-# - Try to find the Exiv2 library
-#
-# EXIV2_MIN_VERSION - You can set this variable to the minimum version you need
-# before doing FIND_PACKAGE(Exiv2). The default is 0.12.
-#
-# Once done this will define
-#
-# EXIV2_FOUND - system has libexiv2
-# EXIV2_INCLUDE_DIR - the libexiv2 include directory
-# EXIV2_LIBRARIES - Link these to use libexiv2
-# EXIV2_DEFINITIONS - Compiler switches required for using libexiv2
-#
-# The minimum required version of Exiv2 can be specified using the
-# standard syntax, e.g. find_package(Exiv2 0.17)
-#
-# For compatibility, also the variable EXIV2_MIN_VERSION can be set to the minimum version
-# you need before doing FIND_PACKAGE(Exiv2). The default is 0.12.
-
-# Copyright (c) 2010, Alexander Neundorf, <neundorf@kde.org>
-# Copyright (c) 2008, Gilles Caulier, <caulier.gilles@gmail.com>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-# Support EXIV2_MIN_VERSION for compatibility:
-if(NOT Exiv2_FIND_VERSION)
- set(Exiv2_FIND_VERSION "${EXIV2_MIN_VERSION}")
-endif()
-
-# the minimum version of exiv2 we require
-if(NOT Exiv2_FIND_VERSION)
- set(Exiv2_FIND_VERSION "0.12")
-endif()
-
-
-if (NOT WIN32)
- # use pkg-config to get the directories and then use these values
- # in the FIND_PATH() and FIND_LIBRARY() calls
- find_package(PkgConfig)
- pkg_check_modules(PC_EXIV2 QUIET exiv2)
- set(EXIV2_DEFINITIONS ${PC_EXIV2_CFLAGS_OTHER})
-endif (NOT WIN32)
-
-
-find_path(EXIV2_INCLUDE_DIR NAMES exiv2/exif.hpp
- HINTS
- ${PC_EXIV2_INCLUDEDIR}
- ${PC_EXIV2_INCLUDE_DIRS}
- )
-
-find_library(EXIV2_LIBRARY NAMES exiv2 libexiv2
- HINTS
- ${PC_EXIV2_LIBDIR}
- ${PC_EXIV2_LIBRARY_DIRS}
- )
-
-
-# Get the version number from exiv2/version.hpp and store it in the cache:
-if(EXIV2_INCLUDE_DIR AND NOT EXIV2_VERSION)
- file(READ ${EXIV2_INCLUDE_DIR}/exiv2/version.hpp EXIV2_VERSION_CONTENT)
- string(REGEX MATCH "#define EXIV2_MAJOR_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
- set(EXIV2_VERSION_MAJOR "${CMAKE_MATCH_1}")
-
- string(REGEX MATCH "#define EXIV2_MINOR_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
- set(EXIV2_VERSION_MINOR "${CMAKE_MATCH_1}")
-
- string(REGEX MATCH "#define EXIV2_PATCH_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
- set(EXIV2_VERSION_PATCH "${CMAKE_MATCH_1}")
-
- set(EXIV2_VERSION "${EXIV2_VERSION_MAJOR}.${EXIV2_VERSION_MINOR}.${EXIV2_VERSION_PATCH}" CACHE STRING "Version number of Exiv2" FORCE)
-endif()
-
-set(EXIV2_LIBRARIES "${EXIV2_LIBRARY}")
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Exiv2 REQUIRED_VARS EXIV2_LIBRARY EXIV2_INCLUDE_DIR
- VERSION_VAR EXIV2_VERSION)
-
-mark_as_advanced(EXIV2_INCLUDE_DIR EXIV2_LIBRARY)
-
diff --git a/docs/find-module/FindExiv2.rst b/docs/find-module/FindExiv2.rst
new file mode 100644
index 00000000..272d09d8
--- /dev/null
+++ b/docs/find-module/FindExiv2.rst
@@ -0,0 +1 @@
+.. ecm-module:: ../../find-modules/FindExiv2.cmake
diff --git a/find-modules/FindExiv2.cmake b/find-modules/FindExiv2.cmake
new file mode 100644
index 00000000..91b1528e
--- /dev/null
+++ b/find-modules/FindExiv2.cmake
@@ -0,0 +1,121 @@
+#.rst:
+# FindExiv2
+# ---------
+#
+# Try to find the Exiv2 library.
+#
+# This will define the following variables:
+#
+# ``Exiv2_FOUND``
+# System has Exiv2.
+#
+# ``Exiv2_VERSION``
+# The version of Exiv2.
+#
+# ``Exiv2_INCLUDE_DIRS``
+# This should be passed to target_include_directories() if
+# the target is not used for linking.
+#
+# ``Exiv2_LIBRARIES``
+# The Exiv2 library.
+# This can be passed to target_link_libraries() instead of
+# the ``Exiv2::Exiv2`` target
+#
+# If ``Exiv2_FOUND`` is TRUE, the following imported target
+# will be available:
+#
+# ``Exiv2::Exiv2``
+# The Exiv2 library
+#
+# Since 5.53.0.
+# TODO KF6: Rename to FindLibExiv2.cmake
+#
+#=============================================================================
+# Copyright (c) 2018, Christophe Giboudeaux, <christophe@krop.fr>
+# Copyright (c) 2010, Alexander Neundorf, <neundorf@kde.org>
+# Copyright (c) 2008, Gilles Caulier, <caulier.gilles@gmail.com>
+#
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_EXIV2 QUIET exiv2)
+
+find_path(Exiv2_INCLUDE_DIRS NAMES exiv2/exif.hpp
+ HINTS ${PC_EXIV2_INCLUDEDIR}
+)
+
+find_library(Exiv2_LIBRARIES NAMES exiv2 libexiv2
+ HINTS ${PC_EXIV2_LIBRARY_DIRS}
+)
+
+set(Exiv2_VERSION ${PC_EXIV2_VERSION})
+
+if(NOT Exiv2_VERSION AND DEFINED Exiv2_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 "${Exiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}")
+ file(READ "${Exiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}" _exiv_version_file_content)
+ string(REGEX MATCH "#define EXIV2_MAJOR_VERSION[ ]+\\([0-9]+\\)" EXIV2_MAJOR_VERSION_MATCH ${_exiv_version_file_content})
+ string(REGEX MATCH "#define EXIV2_MINOR_VERSION[ ]+\\([0-9]+\\)" EXIV2_MINOR_VERSION_MATCH ${_exiv_version_file_content})
+ string(REGEX MATCH "#define EXIV2_PATCH_VERSION[ ]+\\([0-9]+\\)" EXIV2_PATCH_VERSION_MATCH ${_exiv_version_file_content})
+ if(EXIV2_MAJOR_VERSION_MATCH)
+ string(REGEX REPLACE ".*_MAJOR_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_MAJOR_VERSION ${EXIV2_MAJOR_VERSION_MATCH})
+ string(REGEX REPLACE ".*_MINOR_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_MINOR_VERSION ${EXIV2_MINOR_VERSION_MATCH})
+ string(REGEX REPLACE ".*_PATCH_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_PATCH_VERSION ${EXIV2_PATCH_VERSION_MATCH})
+ endif()
+ endif()
+ endforeach()
+
+ set(Exiv2_VERSION "${EXIV2_MAJOR_VERSION}.${EXIV2_MINOR_VERSION}.${EXIV2_PATCH_VERSION}")
+endif()
+
+# Deprecated, for backward compatibility
+set(EXIV2_INCLUDE_DIR "${Exiv2_INCLUDE_DIRS}")
+set(EXIV2_LIBRARIES "${Exiv2_LIBRARIES}")
+set(EXIV2_VERSION "${Exiv2_VERSION}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Exiv2
+ FOUND_VAR Exiv2_FOUND
+ REQUIRED_VARS Exiv2_LIBRARIES Exiv2_INCLUDE_DIRS
+ VERSION_VAR Exiv2_VERSION
+)
+
+mark_as_advanced(Exiv2_INCLUDE_DIRS Exiv2_LIBRARIES)
+
+if(Exiv2_FOUND AND NOT TARGET Exiv2::Exiv2)
+ add_library(Exiv2::Exiv2 UNKNOWN IMPORTED)
+ set_target_properties(Exiv2::Exiv2 PROPERTIES
+ IMPORTED_LOCATION "${Exiv2_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${Exiv2_INCLUDE_DIRS}"
+ )
+endif()
+
+include(FeatureSummary)
+set_package_properties(Exiv2 PROPERTIES
+ URL "http://www.exiv2.org"
+ DESCRIPTION "Image metadata support"
+)