Imported Upstream version 2.10.4
[platform/upstream/freetype2.git] / builds / cmake / FindHarfBuzz.cmake
1 # Copyright (c) 2012, Intel Corporation
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are met:
5 #
6 # * Redistributions of source code must retain the above copyright notice, this
7 #   list of conditions and the following disclaimer.
8 # * Redistributions in binary form must reproduce the above copyright notice,
9 #   this list of conditions and the following disclaimer in the documentation
10 #   and/or other materials provided with the distribution.
11 # * Neither the name of Intel Corporation nor the names of its contributors may
12 #   be used to endorse or promote products derived from this software without
13 #   specific prior written permission.
14 #
15 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 # POSSIBILITY OF SUCH DAMAGE.
26
27
28 # Try to find HarfBuzz include and library directories.
29 #
30 # After successful discovery, this will set for inclusion where needed:
31 #
32 #   HARFBUZZ_INCLUDE_DIRS - containg the HarfBuzz headers
33 #   HARFBUZZ_LIBRARIES    - containg the HarfBuzz library
34
35 include(FindPkgConfig)
36 pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz)
37
38 find_path(HARFBUZZ_INCLUDE_DIRS
39   NAMES hb.h
40   HINTS ${PC_HARFBUZZ_INCLUDEDIR}
41         ${PC_HARFBUZZ_INCLUDE_DIRS}
42   PATH_SUFFIXES harfbuzz)
43
44 find_library(HARFBUZZ_LIBRARIES
45   NAMES harfbuzz
46   HINTS ${PC_HARFBUZZ_LIBDIR}
47         ${PC_HARFBUZZ_LIBRARY_DIRS})
48
49 if (HARFBUZZ_INCLUDE_DIRS)
50   if (EXISTS "${HARFBUZZ_INCLUDE_DIRS}/hb-version.h")
51     file(READ "${HARFBUZZ_INCLUDE_DIRS}/hb-version.h" _harfbuzz_version_content)
52
53     string(REGEX MATCH
54            "#define +HB_VERSION_STRING +\"([0-9]+\\.[0-9]+\\.[0-9]+)\""
55            _dummy "${_harfbuzz_version_content}")
56     set(HARFBUZZ_VERSION "${CMAKE_MATCH_1}")
57   endif ()
58 endif ()
59
60 if ("${harfbuzz_FIND_VERSION}" VERSION_GREATER "${HARFBUZZ_VERSION}")
61   message(FATAL_ERROR
62     "Required version (" ${harfbuzz_FIND_VERSION} ")"
63     " is higher than found version (" ${HARFBUZZ_VERSION} ")")
64 endif ()
65
66 include(FindPackageHandleStandardArgs)
67 find_package_handle_standard_args(
68   harfbuzz
69   REQUIRED_VARS HARFBUZZ_INCLUDE_DIRS HARFBUZZ_LIBRARIES
70   VERSION_VAR HARFBUZZ_VERSION)
71
72 mark_as_advanced(
73   HARFBUZZ_INCLUDE_DIRS
74   HARFBUZZ_LIBRARIES)
75
76 # Allow easy linking as in
77 #
78 #   target_link_libraries(freetype PRIVATE Harfbuzz::Harfbuzz)
79 #
80 if (NOT CMAKE_VERSION VERSION_LESS 3.1)
81   if (HARFBUZZ_FOUND AND NOT TARGET Harfbuzz::Harfbuzz)
82     add_library(Harfbuzz::Harfbuzz INTERFACE IMPORTED)
83     set_target_properties(
84         Harfbuzz::Harfbuzz PROPERTIES
85           INTERFACE_INCLUDE_DIRECTORIES "${HARFBUZZ_INCLUDE_DIRS}")
86   endif ()
87 endif ()