diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2021-02-25 16:40:41 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2021-02-25 16:40:41 +0800 |
commit | 09bf1b41b40151044644d0e35ba9949007fc83cd (patch) | |
tree | 072568a298dab883ea052d7cdff3bcb38eafbfea | |
parent | 4dfe591823eec1d5f702a909ae9206f5fa5cb47d (diff) | |
download | pango-09bf1b41b40151044644d0e35ba9949007fc83cd.tar.gz |
build: Don't build HarfBuzz prematurelyhb-dont-fallback-too-early
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.
-rw-r--r-- | meson.build | 7 | ||||
-rw-r--r-- | 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 |