[pango] meson: Check for HarfBuzz and FontConfig for PangoFT2



commit 55afeeca8031ba74cbcdf569500334ebef6b61e0
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Wed May 31 17:17:17 2017 +0800

    meson: Check for HarfBuzz and FontConfig for PangoFT2
    
    It is possible that we can have the following situations, at least on
    Windows:
    -FreeType present, FontConfig missing
    -Cairo-FT present, with no FontConfig support.
    
    As gen-script-for-lang requires FontConfig, and PangoFT2 depends on
    HarfBuzz, FontConfig and Freetype, we need to check for them before we
    build PangoFT2, and so that we could include PangoFT2 support in
    PangoCairo.
    
    The tests and pango-view have an optional dependency on PangoFT2, so we
    need to also check whether we built PangoFT2 before we try to build
    things related to PangoFT2.
    
    For the tools, since gen-script-for-lang.c depends on FontConfig, check
    for it as well before we build it.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=783274

 docs/meson.build       |    2 +-
 meson.build            |   19 +++++++++++++++----
 pango-view/meson.build |    4 ++--
 pango/meson.build      |    2 +-
 tests/meson.build      |    2 +-
 tools/meson.build      |   12 +++++++-----
 6 files changed, 27 insertions(+), 14 deletions(-)
---
diff --git a/docs/meson.build b/docs/meson.build
index 40154ba..c784149 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -59,7 +59,7 @@ html_images = [
 
 docdeps = [ libpango_dep ]
 
-if freetype_dep.found()
+if build_pangoft2
   docdeps += libpangoft2_dep
 endif
 
diff --git a/meson.build b/meson.build
index f204531..5133d5c 100644
--- a/meson.build
+++ b/meson.build
@@ -235,7 +235,10 @@ endif
 # The first version of freetype with a pkg-config file is 2.1.5
 # We require both fontconfig and freetype if we are to have either.
 freetype_dep = dependency('freetype2', required: false)
-if freetype_dep.found() and fontconfig_dep.found()
+
+# To build pangoft2, we need HarfBuzz, FontConfig and FreeType
+build_pangoft2 = harfbuzz_dep.found() and fontconfig_dep.found() and freetype_dep.found()
+if build_pangoft2
   pango_conf.set('HAVE_FREETYPE', 1)
   pango_deps += freetype_dep
 endif
@@ -267,6 +270,7 @@ if cairo_dep.found()
   # - version
   # - define
   # - backend name
+  # Note that Cairo can be built with FreeType but without FontConfig
   cairo_font_backends = [
     [ 'cairo-ft', cairo_req_version, 'HAVE_CAIRO_FREETYPE', 'freetype', ],
     [ 'cairo-win32', cairo_req_version, 'HAVE_CAIRO_WIN32', 'win32', ],
@@ -278,8 +282,15 @@ if cairo_dep.found()
   foreach b: cairo_font_backends
     dep = dependency(b[0], version: b[1], required: false)
     if dep.found()
-      pango_conf.set(b[2], 1)
-      pango_font_backends += b[3]
+      if b[0] == 'cairo-ft'
+        if build_pangoft2
+          pango_conf.set(b[2], 1)
+          pango_font_backends += b[3]
+        endif
+      else
+        pango_conf.set(b[2], 1)
+        pango_font_backends += b[3]
+      endif
     endif
   endforeach
 
@@ -336,7 +347,7 @@ pkgconf.set('PKGCONFIG_CAIRO_REQUIRES', pangocairo_requires)
 pkgconf_files = [
   [ 'pango.pc' ],
   [ 'pangowin32.pc', host_system == 'windows' ],
-  [ 'pangoft2.pc', freetype_dep.found() ],
+  [ 'pangoft2.pc', build_pangoft2 ],
   [ 'pangoxft.pc', xft_dep.found() ],
   [ 'pangocairo.pc', cairo_dep.found() ],
 ]
diff --git a/pango-view/meson.build b/pango-view/meson.build
index b7aa634..c607f71 100644
--- a/pango-view/meson.build
+++ b/pango-view/meson.build
@@ -9,12 +9,12 @@ pango_view_deps = [
   libpango_dep,
 ]
 
-if freetype_dep.found()
+if build_pangoft2
   pango_view_sources += 'viewer-pangoft2.c'
   pango_view_deps += libpangoft2_dep
 endif
 
-if xft_dep.found()
+if xft_dep.found() and build_pangoft2
   pango_view_sources += [
     'viewer-pangoxft.c',
     'viewer-x.c',
diff --git a/pango/meson.build b/pango/meson.build
index 93f0740..3312d72 100644
--- a/pango/meson.build
+++ b/pango/meson.build
@@ -154,7 +154,7 @@ libpango_dep = declare_dependency(
 )
 
 # FreeType
-if freetype_dep.found()
+if build_pangoft2
   pangoft2_headers = [
     'pango-ot.h',
     'pangofc-font.h',
diff --git a/tests/meson.build b/tests/meson.build
index a4df3bc..bceb909 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -24,7 +24,7 @@ tests = [
   [ 'cxx-test', [ 'cxx-test.cpp' ] ],
 ]
 
-if freetype_dep.found()
+if build_pangoft2
   test_cflags += '-DHAVE_FREETYPE'
   tests += [
     [ 'test-ot-tags', [ 'test-ot-tags.c' ], [ libpangoft2_dep ] ],
diff --git a/tools/meson.build b/tools/meson.build
index 37a3be7..37e5243 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -1,5 +1,7 @@
-executable('gen-script-for-lang', 'gen-script-for-lang.c',
-           dependencies: pango_deps + [ libpango_dep ],
-           c_args: common_cflags + pango_debug_cflags + [ '-DPANGO_DISABLE_DEPRECATED' ],
-           include_directories: root_inc,
-           install: false)
+if fontconfig_dep.found()
+  executable('gen-script-for-lang', 'gen-script-for-lang.c',
+             dependencies: pango_deps + [ libpango_dep ],
+             c_args: common_cflags + pango_debug_cflags + [ '-DPANGO_DISABLE_DEPRECATED' ],
+             include_directories: root_inc,
+             install: false)
+endif


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