[pango/pango1-dwrite: 1/3] build: Check for DirectWrite support
- From: Chun-wei Fan <fanchunwei src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/pango1-dwrite: 1/3] build: Check for DirectWrite support
- Date: Thu, 7 Jul 2022 04:37:20 +0000 (UTC)
commit f9eb41e6a889496b5c93c56175d9c4eede0bc150
Author: Chun-wei Fan <fanchunwei src gnome org>
Date: Wed Jul 6 16:58:41 2022 +0800
build: Check for DirectWrite support
...in Cairo and HarfBuzz. They must be present before we can try to use
DirectWrite and its GDI interop features in the respective code paths,
since we can't bump deps in a stable release series.
Since upstream Cairo gained DirectWrite support very recently, check for
it only via pkg-config, since Cairo had Meson build support quite a bit before
that happened.
meson.build | 26 ++++++++++++++++++++++++++
pango/meson.build | 3 +++
2 files changed, 29 insertions(+)
---
diff --git a/meson.build b/meson.build
index fe2f9d47c..2af153581 100644
--- a/meson.build
+++ b/meson.build
@@ -46,6 +46,7 @@ osx_current = pango_binary_age - pango_interface_age + 1
pango_osxversion = [osx_current, '@0@.@1@.0'.format(osx_current, pango_interface_age)]
cc = meson.get_compiler('c')
+cpp = meson.get_compiler('cpp')
host_system = host_machine.system()
# Compiler and linker flags
@@ -393,6 +394,11 @@ cairo_dep = dependency('cairo', version: cairo_req_version, required: cairo_opti
if cairo_dep.found()
cairo_found_type = cairo_dep.type_name()
+ if host_system == 'windows'
+ cairo_dwrite_dep = dependency('cairo-win32-dwrite-font', version: cairo_req_version, required: false)
+ else
+ cairo_dwrite_dep = disabler()
+ endif
else
if cc.get_id() == 'msvc' and cc.has_header('cairo.h')
cairo_dep = cc.find_library('cairo', required: cairo_option)
@@ -566,6 +572,26 @@ if cairo_dep.found()
endif
endif
+enable_dwrite_support = false
+if harfbuzz_dep.type_name() != 'internal'
+ enable_dwrite_support = cpp.has_header_symbol(
+ 'hb-directwrite.h',
+ 'hb_directwrite_face_create',
+ dependencies: harfbuzz_dep,
+ prefix: '#include <dwrite.h>',
+ )
+else
+ enable_dwrite_support = true
+endif
+
+if enable_dwrite_support and cairo_dwrite_dep.found()
+ pango_conf.set('HAVE_CAIRO_WIN32_DIRECTWRITE', 1)
+endif
+
+if enable_dwrite_support
+ pango_conf.set('HAVE_DIRECTWRITE', 1)
+endif
+
# libsysprof-capture support
libsysprof_capture_dep = dependency('sysprof-capture-4',
required: get_option('sysprof'),
diff --git a/pango/meson.build b/pango/meson.build
index 1a4b41419..090ae80ae 100644
--- a/pango/meson.build
+++ b/pango/meson.build
@@ -430,6 +430,9 @@ if host_system == 'windows'
libpango_dep,
cc.find_library('gdi32'),
]
+ if enable_dwrite_support
+ pangowin32_deps += cc.find_library('dwrite')
+ endif
pangowin32_rc = configure_file(
input: 'pangowin32.rc.in',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]