diff --git a/cmake/modules/FindExiv2.cmake b/cmake/modules/FindExiv2.cmake index dd9af867..2d4c3aad 100644 --- a/cmake/modules/FindExiv2.cmake +++ b/cmake/modules/FindExiv2.cmake @@ -1,79 +1,92 @@ # - 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, # Copyright (c) 2008, Gilles Caulier, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. +### 2018-12-29 ZaJ: +# When Exiv2 0.26 can be deprecated, this whole FindExiv2.cmake file should be removed +# and find_package(exiv2) can be used directly. +set(exiv2_FIND_QUIETLY ${Exiv2_FIND_QUIETLY}) +find_package(exiv2 ${Exiv2_FIND_VERSION} CONFIG) +if(exiv2_FOUND) + set(EXIV2_FOUND ${exiv2_FOUND}) + set(EXIV2_LIBRARIES exiv2lib) + message(STATUS "debug: using modern exiv2") + return() +endif() +message(STATUS "debug: using legacy exiv2") + # Support EXIV2_MIN_VERSION for compatibility: if(NOT Exiv2_FIND_VERSION) set(Exiv2_FIND_VERSION "${EXIV2_MIN_VERSION}") endif(NOT Exiv2_FIND_VERSION) # the minimum version of exiv2 we require if(NOT Exiv2_FIND_VERSION) set(Exiv2_FIND_VERSION "0.12") endif(NOT Exiv2_FIND_VERSION) 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(EXIV2_INCLUDE_DIR AND NOT EXIV2_VERSION) 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)