File: FindExiv2.cmake

package info (click to toggle)
hdrmerge 0.5%2Bgit20200117-4.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 33,936 kB
  • sloc: cpp: 5,043; sh: 175; makefile: 5
file content (89 lines) | stat: -rw-r--r-- 3,063 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# - 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)