[pango/hb-dont-fallback-too-early] build: Don't build HarfBuzz prematurely




commit 09bf1b41b40151044644d0e35ba9949007fc83cd
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Thu Feb 25 16:40:41 2021 +0800

    build: Don't build HarfBuzz prematurely
    
    For Visual Studio builds, since HarfBuzz is built with CMake until
    HarfBuzz 2.6.x yet we only require HarfBuzz 2.0.0 or later, we
    aren't able to find pre-2.6.x HarfBuzz using Meson's dependency()
    method as the support for CMake config files is not done in Meson.
    
    As a result, we need to make sure that we first manually look for the
    HarfBuzz/HarfBuzz-GObject libraries before we attempt to use the
    fallback mechanism in Meson, so that we won't rebuild HarfBuzz
    unneccesarily.
    
    This rebuild will also cause issues for older compilers that don't
    have enough support for C++11 as building Harfbuzz with Meson support
    requires a C++11 compiler, which was mandated in HarfBuzz 2.5.0.

 meson.build       |  7 +++----
 pango/meson.build | 15 +++++++++++++--
 2 files changed, 16 insertions(+), 6 deletions(-)
---
diff --git a/meson.build b/meson.build
index 28d9c9ba..3ebbfeff 100644
--- a/meson.build
+++ b/meson.build
@@ -239,9 +239,7 @@ fontconfig_pc=''
 harfbuzz_lib=''
 fontconfig_lib=''
 
-harfbuzz_dep = dependency('harfbuzz', version: harfbuzz_req_version, required: false,
-                          fallback: ['harfbuzz', 'libharfbuzz_dep'],
-                          default_options: ['coretext=enabled'])
+harfbuzz_dep = dependency('harfbuzz', version: harfbuzz_req_version, required: false)
 if harfbuzz_dep.found()
   harfbuzz_pc = 'harfbuzz'
 else
@@ -262,7 +260,8 @@ endif
 # when finding dependencies via CMake files is fixed.
 if not harfbuzz_dep.found()
   harfbuzz_dep = dependency('harfbuzz', version: harfbuzz_req_version,
-                            fallback: ['harfbuzz', 'libharfbuzz_dep'])
+                            fallback: ['harfbuzz', 'libharfbuzz_dep'],
+                            default_options: ['coretext=enabled'])
 endif
 
 if not harfbuzz_dep.found()
diff --git a/pango/meson.build b/pango/meson.build
index 777f5374..e5121bd8 100644
--- a/pango/meson.build
+++ b/pango/meson.build
@@ -129,8 +129,19 @@ if build_gir
   gir_args = [
     '--quiet',
   ]
-  harfbuzz_gobject_dep = dependency('harfbuzz-gobject', version: harfbuzz_req_version, required: false,
-                          fallback: ['harfbuzz', 'libharfbuzz_gobject_dep'])
+  harfbuzz_gobject_dep = dependency('harfbuzz-gobject', version: harfbuzz_req_version, required: false)
+
+  if not harfbuzz_gobject_dep.found() and cc.get_argument_syntax() == 'msvc'
+    # The CMake build files for HarfBuzz (which is used for MSVC builds) do not
+    # generate pkg-config files, so look for harfbuzz-gobject.lib
+    harfbuzz_gobject_dep = cc.find_library('harfbuzz-gobject', has_headers: ['hb-gobject.h'], required: 
false)
+  endif
+
+  if not harfbuzz_gobject_dep.found()
+    harfbuzz_gobject_dep = dependency('harfbuzz-gobject', version: harfbuzz_req_version, required: false,
+                            fallback: ['harfbuzz', 'libharfbuzz_gobject_dep'])
+  endif
+
   if harfbuzz_gobject_dep.found()
     pango_deps += harfbuzz_gobject_dep
   endif


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]