aboutsummaryrefslogtreecommitdiff
path: root/ports/cairomm/cmake/FindCairo.cmake
blob: 0a87fadf8df6fac4c4d3bb3a6858780db496b187 (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#
# revision: 2
# See https://github.com/CMakePorts/CMakeFindPackages for updates
#
#.rst:
# FindCairo
# ---------
#
# Locate Cairo library
#
# This module defines
#
# ::
#  CAIRO_FOUND          - system has the CAIRO library
#  CAIRO_INCLUDE_DIR    - the CAIRO include directory
#  CAIRO_LIBRARIES      - The libraries needed to use CAIRO
#  CAIRO_VERSION        - This is set to $major.$minor.$revision (eg. 0.9.8)
#  CAIRO_VERSION_STRING - This is set to $major.$minor.$revision (eg. 0.9.8)
#
# Authors:
#  Copyright (c)           Eric Wing
#  Copyright (c)           Alexander Neundorf
#  Copyright (c) 2008      Joshua L. Blocher  <verbalshadow at gmail dot com>
#  Copyright (c) 2012      Dmitry Baryshnikov <polimax at mail dot ru>
#  Copyright (c) 2013-2017 Mikhail Paulyshka  <me at mixaill dot tk>
#


if (NOT WIN32)
    find_package(PkgConfig)
    if (PKG_CONFIG_FOUND)
        pkg_check_modules(_CAIRO cairo)

        SET(CAIRO_VERSION ${_CAIRO_VERSION})
        STRING (REGEX REPLACE "([0-9]+).([0-9]+).([0-9]+)" "\\1" num "${CAIRO_VERSION}")
        MATH (EXPR CAIRO_VERSION_MAJOR "${num}")
        STRING (REGEX REPLACE "([0-9]+).([0-9]+).([0-9]+)" "\\2" num "${CAIRO_VERSION}")
        MATH (EXPR CAIRO_VERSION_MINOR "${num}")
        STRING (REGEX REPLACE "([0-9]+).([0-9]+).([0-9]+)" "\\3" num "${CAIRO_VERSION}")
        MATH (EXPR CAIRO_VERSION_MICRO "${num}")
    endif (PKG_CONFIG_FOUND)
endif (NOT WIN32)

set(_CAIRO_ROOT_HINTS_AND_PATHS
  HINTS
     $ENV{CAIRO}
     $ENV{CAIRO_DIR}
     ${CMAKE_FIND_ROOT_PATH}
     ${CAIRO_ROOT_DIR}
  PATHS
    ${CMAKE_FIND_ROOT_PATH}
    $ENV{CAIRO}/src
    /usr
    /usr/local
)

find_path(CAIRO_INCLUDE_DIR
    NAMES
        cairo.h
    HINTS
        ${_CAIRO_INCLUDEDIR}
        ${_CAIRO_ROOT_HINTS_AND_PATHS}
    PATH_SUFFIXES
        include
        "include/cairo"
)

if(NOT CAIRO_LIBRARY)
    FIND_LIBRARY(CAIRO_LIBRARY_RELEASE
        NAMES
            cairo
            cairo-static
        HINTS
            ${_CAIRO_LIBDIR}
            ${_CAIRO_ROOT_HINTS_AND_PATHS}
        PATH_SUFFIXES
            "lib"
            "local/lib"
    )

    FIND_LIBRARY(CAIRO_LIBRARY_DEBUG
        NAMES
            cairod
            cairo-staticd
        HINTS
            ${_CAIRO_LIBDIR}
            ${_CAIRO_ROOT_HINTS_AND_PATHS}
        PATH_SUFFIXES
            "lib"
            "local/lib"
    )

    include(SelectLibraryConfigurations)
    select_library_configurations(CAIRO)
endif()
set(CAIRO_LIBRARIES ${CAIRO_LIBRARY})

if (NOT CAIRO_VERSION)
    if (EXISTS "${CAIRO_INCLUDE_DIR}/cairo-version.h")
        file(READ "${CAIRO_INCLUDE_DIR}/cairo-version.h" CAIRO_VERSION_CONTENT)

        string(REGEX MATCH "#define +CAIRO_VERSION_MAJOR +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
        set(CAIRO_VERSION_MAJOR "${CMAKE_MATCH_1}")

        string(REGEX MATCH "#define +CAIRO_VERSION_MINOR +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
        set(CAIRO_VERSION_MINOR "${CMAKE_MATCH_1}")

        string(REGEX MATCH "#define +CAIRO_VERSION_MICRO +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
        set(CAIRO_VERSION_MICRO "${CMAKE_MATCH_1}")

        set(CAIRO_VERSION "${CAIRO_VERSION_MAJOR}.${CAIRO_VERSION_MINOR}.${CAIRO_VERSION_MICRO}")
        set(CAIRO_VERSION_STRING CAIRO_VERSION)
    endif ()
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
    CAIRO
    REQUIRED_VARS
        CAIRO_LIBRARIES
        CAIRO_INCLUDE_DIR
    VERSION_VAR
        CAIRO_VERSION_STRING
)

MARK_AS_ADVANCED(
    CAIRO_INCLUDE_DIR
    CAIRO_LIBRARY
    CAIRO_LIBRARIES)