summaryrefslogtreecommitdiff
path: root/cmake/FindHarfbuzz.cmake
blob: f35598f0b49a7fd7fc64837700c0bc7ba8c5eb63 (plain) (blame)
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
find_package(PkgConfig)

set(Harfbuzz_DEPS)

if(PKG_CONFIG_FOUND)
  pkg_search_module(Harfbuzz_PKG harfbuzz)
endif()

find_library(Harfbuzz_LIBRARY harfbuzz HINTS ${Harfbuzz_PKG_LIBRARY_DIRS})
set(Harfbuzz harfbuzz)

if(Harfbuzz_LIBRARY)
  add_library(${Harfbuzz} SHARED IMPORTED)
  set_property(TARGET ${Harfbuzz} PROPERTY IMPORTED_LOCATION "${Harfbuzz_LIBRARY}")
  set_property(TARGET ${Harfbuzz} PROPERTY INTERFACE_COMPILE_OPTIONS "${Harfbuzz_PKG_CFLAGS_OTHER}")

  set(Harfbuzz_INCLUDE_DIRS)

  find_path(Harfbuzz_INCLUDE_DIR "hb.h"
    HINTS ${Harfbuzz_PKG_INCLUDE_DIRS})

  if(Harfbuzz_INCLUDE_DIR)
    file(STRINGS "${Harfbuzz_INCLUDE_DIR}/hb-version.h" HB_VERSION_MAJOR REGEX "^#define HB_VERSION_MAJOR +\\(?([0-9]+)\\)?$")
    string(REGEX REPLACE "^#define HB_VERSION_MAJOR \\(?([0-9]+)\\)?$" "\\1" HB_VERSION_MAJOR "${HB_VERSION_MAJOR}")
    file(STRINGS "${Harfbuzz_INCLUDE_DIR}/hb-version.h" HB_VERSION_MINOR REGEX "^#define HB_VERSION_MINOR +\\(?([0-9]+)\\)?$")
    string(REGEX REPLACE "^#define HB_VERSION_MINOR \\(?([0-9]+)\\)?$" "\\1" HB_VERSION_MINOR "${HB_VERSION_MINOR}")
    file(STRINGS "${Harfbuzz_INCLUDE_DIR}/hb-version.h" HB_VERSION_MICRO REGEX "^#define HB_VERSION_MICRO +\\(?([0-9]+)\\)?$")
    string(REGEX REPLACE "^#define HB_VERSION_MICRO \\(?([0-9]+)\\)?$" "\\1" HB_VERSION_MICRO "${HB_VERSION_MICRO}")
    set(Harfbuzz_VERSION "${HB_VERSION_MAJOR}.${HB_VERSION_MINOR}.${HB_VERSION_MICRO}")
    unset(HB_VERSION_MAJOR)
    unset(HB_VERSION_MINOR)
    unset(HB_VERSION_MICRO)

    list(APPEND Harfbuzz_INCLUDE_DIRS ${Harfbuzz_INCLUDE_DIR})
    set_property(TARGET ${Harfbuzz} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${Harfbuzz_INCLUDE_DIR}")
  endif()
endif()

set(Harfbuzz_DEPS_FOUND_VARS)
foreach(harfbuzz_dep ${Harfbuzz_DEPS})
  find_package(${harfbuzz_dep})

  list(APPEND Harfbuzz_DEPS_FOUND_VARS "${harfbuzz_dep}_FOUND")
  list(APPEND Harfbuzz_INCLUDE_DIRS ${${harfbuzz_dep}_INCLUDE_DIRS})

  set_property (TARGET ${Harfbuzz} APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${${harfbuzz_dep}}")
endforeach(harfbuzz_dep)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Harfbuzz
    REQUIRED_VARS
      Harfbuzz_LIBRARY
      Harfbuzz_INCLUDE_DIRS
      ${Harfbuzz_DEPS_FOUND_VARS}
    VERSION_VAR
      Harfbuzz_VERSION)

unset(Harfbuzz_DEPS_FOUND_VARS)