From 90fb1eb4e78a84649ac9e7a75e585e689f74ec31 Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Wed, 20 May 2020 18:59:35 +0200 Subject: [PATCH] Added missing dependency Harfbuzz to GTK3 --- cmake/FindGTK3.cmake | 3 ++- cmake/FindHarfbuzz.cmake | 58 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 cmake/FindHarfbuzz.cmake diff --git a/cmake/FindGTK3.cmake b/cmake/FindGTK3.cmake index 049a276f..163d6c01 100644 --- a/cmake/FindGTK3.cmake +++ b/cmake/FindGTK3.cmake @@ -35,7 +35,8 @@ set(GTK3_DEPS GDK3 Pango Cairo - GDKPixbuf) + GDKPixbuf + Harfbuzz) if(PKG_CONFIG_FOUND) pkg_search_module(GTK3_PKG QUIET gtk+-3.0) diff --git a/cmake/FindHarfbuzz.cmake b/cmake/FindHarfbuzz.cmake new file mode 100644 index 00000000..f35598f0 --- /dev/null +++ b/cmake/FindHarfbuzz.cmake @@ -0,0 +1,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)