2ea1f8767ad67a9c2e92de527d0f3ea505d7255e
[WebKit.git] / Source / cmake / FindFreetype2.cmake
1 # Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions
5 # are met:
6 # 1. Redistributions of source code must retain the above copyright
7 #    notice, this list of conditions and the following disclaimer.
8 # 2. Redistributions in binary form must reproduce the above copyright
9 #    notice, this list of conditions and the following disclaimer in the
10 #    documentation and/or other materials provided with the distribution.
11 #
12 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
13 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
16 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
17 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
18 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
19 # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
20 # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
24 find_package(PkgConfig)
25 pkg_check_modules(PC_FREETYPE2 REQUIRED freetype2)
26
27 find_path(FREETYPE2_HEADER_DIR
28     NAMES freetype.h
29     HINTS ${PC_FREETYPE2_INCLUDE_DIRS}
30           ${PC_FREETYPE2_INCLUDEDIR}
31     PATH_SUFFIXES freetype
32 )
33
34 find_path(FREETYPE2_ROOT_INCLUDE_DIR
35     NAMES freetype/freetype.h
36     HINTS ${PC_FREETYPE2_INCLUDE_DIRS}
37           ${PC_FREETYPE2_INCLUDEDIR}
38 )
39
40 find_library(FREETYPE2_LIBRARIES
41     NAMES freetype
42     HINTS ${PC_FREETYPE2_LIBDIR}
43           ${PC_FREETYPE2_LIBRARY_DIRS}
44 )
45
46 set(FREETYPE2_INCLUDE_DIRS
47     ${FREETYPE2_HEADER_DIR}
48     ${FREETYPE2_ROOT_INCLUDE_DIR}
49 )
50
51 # Inspired in the original FindFreetype.cmake
52 if (FREETYPE2_HEADER_DIR AND EXISTS "${FREETYPE2_HEADER_DIR}/freetype.h")
53     file(STRINGS "${FREETYPE2_HEADER_DIR}/freetype.h" freetype_version_str
54          REGEX "^#[\t ]*define[\t ]+FREETYPE_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
55
56     unset(FREETYPE2_VERSION_STRING)
57     foreach (VPART MAJOR MINOR PATCH)
58         foreach (VLINE ${freetype_version_str})
59             if (VLINE MATCHES "^#[\t ]*define[\t ]+FREETYPE_${VPART}")
60                 string(REGEX REPLACE "^#[\t ]*define[\t ]+FREETYPE_${VPART}[\t ]+([0-9]+)$" "\\1"
61                        FREETYPE2_VERSION_PART "${VLINE}")
62                 if (FREETYPE2_VERSION_STRING)
63                     set(FREETYPE2_VERSION_STRING "${FREETYPE2_VERSION_STRING}.${FREETYPE2_VERSION_PART}")
64                 else ()
65                     set(FREETYPE2_VERSION_STRING "${FREETYPE2_VERSION_PART}")
66                 endif ()
67                 unset(FREETYPE2_VERSION_PART)
68             endif ()
69         endforeach ()
70     endforeach ()
71 endif ()
72
73 set(VERSION_OK TRUE)
74 if (FREETYPE2_VERSION_STRING)
75     if (PC_FREETYPE2_FIND_VERSION_EXACT)
76         if (NOT("${Freetype2_FIND_VERSION}" VERSION_EQUAL "${FREETYPE2_VERSION_STRING}"))
77             set(VERSION_OK FALSE)
78         endif ()
79     else ()
80         if ("${FREETYPE2_VERSION_STRING}" VERSION_LESS "${Freetype2_FIND_VERSION}")
81             set(VERSION_OK FALSE)
82         endif ()
83     endif ()
84 endif ()
85
86 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype2 DEFAULT_MSG FREETYPE2_INCLUDE_DIRS FREETYPE2_LIBRARIES VERSION_OK)