Codebase list hdrmerge / debian/0.5+git20200117-1 cmake / FindExiv2.cmake
debian/0.5+git20200117-1

Tree @debian/0.5+git20200117-1 (Download .tar.gz)

FindExiv2.cmake @debian/0.5+git20200117-1raw · history · blame

# - Try to find Exiv2
# Once done this will define
#
#  EXIV2_FOUND - system has Exiv2
#  EXIV2_INCLUDE_DIR - the Exiv2 include directory
#  EXIV2_LIBRARIES - Link these to use Exiv2
#  EXIV2_DEFINITIONS - Compiler switches required for using Exiv2
#
#=============================================================================
#  Copyright (c) 2019 Andres Schneider <asn@cryptomilk.org>
#
#  Distributed under the OSI-approved BSD License (the "License");
#  see accompanying file Copyright.txt for details.
#
#  This software is distributed WITHOUT ANY WARRANTY; without even the
#  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#  See the License for more information.
#=============================================================================
#

if (UNIX)
  find_package(PkgConfig)
  if (PKG_CONFIG_FOUND)
    pkg_check_modules(_EXIV2 exiv2)
  endif (PKG_CONFIG_FOUND)
endif (UNIX)

find_path(EXIV2_INCLUDE_DIR
    NAMES
        exiv2/exif.hpp
    PATHS
        ${_EXIV2_INCLUDEDIR}
)

find_library(EXIV2_LIBRARY
    NAMES
        exiv2
    PATHS
        ${_EXIV2_LIBDIR}
)

if (EXIV2_LIBRARY)
    set(EXIV2_LIBRARIES
        ${EXIV2_LIBRARIES}
        ${EXIV2_LIBRARY}
    )
endif (EXIV2_LIBRARY)

# Get the version number from exiv2/version.hpp and store it in the cache:
if (EXIV2_INCLUDE_DIR AND NOT EXIV2_VERSION)
    set(EXIV2_VERSION_STRING_FOUND FALSE)

    if (EXISTS ${EXIV2_INCLUDE_DIR}/exiv2/version.hpp)
        file(READ ${EXIV2_INCLUDE_DIR}/exiv2/version.hpp EXIV2_VERSION_CONTENT)

        string(FIND "${EXIV2_VERSION_CONTENT}" "#define EXIV2_MAJOR_VERSION" EXIV2_MAJOR_FOUND)
        if (${EXIV2_MAJOR_FOUND} GREATER 0)
            set(EXIV2_VERSION_STRING_FOUND TRUE)
        endif()
    endif()

    if (NOT EXIV2_VERSION_STRING_FOUND AND EXISTS ${EXIV2_INCLUDE_DIR}/exiv2/exv_conf.h)
        file(READ ${EXIV2_INCLUDE_DIR}/exiv2/exv_conf.h EXIV2_VERSION_CONTENT)
    endif()

    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}")
endif (EXIV2_INCLUDE_DIR AND NOT EXIV2_VERSION)

if (EXIV2_VERSION)
    set(EXIV2_FOUND TRUE)
endif (EXIV2_VERSION)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Exiv2
                                  FOUND_VAR EXIV2_FOUND
                                  REQUIRED_VARS EXIV2_INCLUDE_DIR EXIV2_LIBRARY EXIV2_LIBRARIES
                                  VERSION_VAR EXIV2_VERSION)

# show the EXIV2_INCLUDE_DIR and EXIV2_LIBRARIES variables only in the advanced view
mark_as_advanced(EXIV2_INCLUDE_DIR EXIV2_LIBRARY EXIV2_LIBRARIES)