aboutsummaryrefslogtreecommitdiff
path: root/attic/modules/FindExiv2.cmake
blob: 770b3c653ac47bced3a7ee599681cb5eed6462b7 (plain)
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
# - 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 compatiblity, 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)