Commit 5d3af9bf authored by Emmanuele Bassi's avatar Emmanuele Bassi

build: Add Meson build system

Meson is a meta build system that is:

  - fast
  - simpler to understand and use
  - portable to multiple platforms through different backends
  - well integrated with the GNOME platform
  - well maintained

Using Meson allows us to build Pango much more quickly, and on all the
platforms we currently target, without any loss of functionality,
compared to Autotools.

Some timing comparisons with hot ccache for both build systems:

  * autogen.sh:                         * meson
    real	0m11.149s                 real          0m2.525s
    user	0m8.153s                  user	        0m1.609s
    sys	        0m2.363s                  sys	        0m1.206s
  * make -j$(($(nproc) + 2))            * ninja
    real	0m9.186s                  real	        0m3.387s
    user	0m16.295s                 user	        0m6.887s
    sys	        0m5.337s                  sys	        0m1.318s
  --------------------------------------------------------------
  * autotools                           * meson + ninja
    real	0m27.669s                 real	        0m5.772s
    user	0m45.622s                 user	        0m8.465s
    sys	        0m10.698s                 sys	        0m2.357s

System: Intel Core i7-7500U, SSD, 16GB of RAM
parent 4819027c
subdir('xml')
version_xml_conf = configuration_data()
version_xml_conf.set('PANGO_VERSION', meson.project_version())
configure_file(input: 'version.xml.in',
output: 'version.xml',
configuration: version_xml_conf)
private_headers = [
'ftglue.h',
'modules.h',
'pangoatsui-private.h',
'pangocairo-private.h',
'pangocairo-fc.h',
'pangocairo-win32.h',
'pangocairo-atsui.h',
'pango-color-table.h',
'pango-engine-private.h',
'pango-impl-utils.h',
'pango-glyph-item-private.h',
'pango-layout-private.h',
'pango-script-table.h',
'pango-script-private.h',
'pangofc-private.h',
'pangoft2-private.h',
'pangowin32-private.h',
'pangoatsui-private.h',
'pangox-private.h',
'pangoxft-private.h',
'pango-ot-private.h',
'pango-script-lang-table.h',
'pango-language-sample-table.h',
'pangocoretext-private.h',
'pangoatsui-private.h',
'mini-fribidi',
]
if not host_system.contains('darwin')
private_headers += [
'pangocairo-coretextfont.h',
'pangocairo-coretext.h',
'pangocoretext.h',
]
endif
if not host_system.contains('windows')
private_headers += [
'pangocairo-win32.h',
'pangowin32.h',
]
endif
content_files = [
'pango_markup.sgml',
'version.xml',
]
html_images = [
'layout.gif',
'rotated-text.png',
]
docdeps = [ libpango_dep ]
if freetype_dep.found()
docdeps += libpangoft2_dep
endif
if xft_dep.found()
docdeps += libpangoxft_dep
endif
if cairo_dep.found()
docdeps += libpangocairo_dep
endif
glib_prefix = dependency('glib-2.0').get_pkgconfig_variable('prefix')
glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html')
cairo_prefix = dependency('cairo').get_pkgconfig_variable('prefix')
cairo_docpath = join_paths(cairo_prefix, 'share', 'gtk-doc', 'html')
docpath = join_paths(pango_datadir, 'gtk-doc', 'html')
gnome.gtkdoc('pango',
main_xml: 'pango-docs.sgml',
src_dir: [
join_paths(meson.source_root(), 'pango'),
join_paths(meson.build_root(), 'pango'),
],
dependencies: docdeps,
gobject_typesfile: 'pango.types',
scan_args: [
'--rebuild-types',
'--deprecated-guards=PANGO_DISABLE_DEPRECATED',
'--ignore-decorators=_PANGO_EXTERN',
'--ignore-headers=' + ' '.join(private_headers),
],
mkdb_args: [
'--sgml-mode',
'--output-format=xml',
],
fixxref_args: [
'--html-dir=@0@'.format(docpath),
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
'--extra-dir=@0@'.format(join_paths(cairo_docpath, 'cairo')),
],
html_assets: html_images,
install: true)
<!ENTITY package "@PACKAGE@">
<!ENTITY package_bugreport "@PACKAGE_BUGREPORT@">
<!ENTITY package_name "@PACKAGE_NAME@">
<!ENTITY package_string "@PACKAGE_STRING@">
<!ENTITY package_tarname "@PACKAGE_TARNAME@">
<!ENTITY package_url "@PACKAGE_URL@">
<!ENTITY package_version "@PACKAGE_VERSION@">
<!ENTITY package_api_version "@PACKAGE_API_VERSION@">
ent_conf = configuration_data()
ent_conf.set('PACKAGE', meson.project_name())
ent_conf.set('PACKAGE_BUGREPORT', 'https://bugzilla.gnome.org/enter_bug.cgi?product=pango')
ent_conf.set('PACKAGE_NAME', meson.project_name())
ent_conf.set('PACKAGE_STRING', meson.project_name())
ent_conf.set('PACKAGE_TARNAME', '@0@-@1@'.format(meson.project_name(), meson.project_version()))
ent_conf.set('PACKAGE_URL', 'https://developer.gnome.org/pango/stable')
ent_conf.set('PACKAGE_VERSION', meson.project_version())
ent_conf.set('PACKAGE_API_VERSION', pango_api_version)
configure_file(input: 'gtkdocentities.ent.in', output: 'gtkdocentities.ent', configuration: ent_conf)
examples = []
if pango_cairo_backends.contains('png')
examples += [
'cairoshape',
'cairosimple',
'cairotwisted',
]
endif
examples_deps = [ libpango_dep, libpangocairo_dep, ]
if pango_font_backends.contains('freetype')
examples_deps += libpangoft2_dep
endif
foreach e: examples
executable(e, '@0@.c'.format(e),
dependencies: examples_deps + pango_deps,
include_directories: root_inc,
install: false)
endforeach
project('pango', 'c', version: '1.40.5',
license: 'LGPLv2.1+',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',
'c_std=c99',
],
meson_version : '>= 0.40.0')
add_project_arguments([ '-D_POSIX_C_SOURCE', '-D_POSIX_THREAD_SAFE_FUNCTIONS', '-D_GNU_SOURCE', ], language: 'c')
pango_prefix = get_option('prefix')
pango_libdir = join_paths(pango_prefix, get_option('libdir'))
pango_sysconfdir = join_paths(pango_prefix, get_option('sysconfdir'))
pango_includedir = join_paths(pango_prefix, get_option('includedir'))
pango_datadir = join_paths(pango_prefix, get_option('datadir'))
version = meson.project_version().split('.')
pango_major_version = version[0].to_int()
pango_minor_version = version[1].to_int()
pango_micro_version = version[2].to_int()
pango_interface_age = pango_minor_version.is_odd() ? 0 : pango_micro_version
pango_binary_age = pango_minor_version * 100 + pango_micro_version
pango_api_version = '@0@.0'.format(pango_major_version)
pango_api_path = 'pango-@0@/pango'.format(pango_api_version)
pango_conf = configuration_data()
pango_conf.set('PANGO_BINARY_AGE', pango_binary_age)
pango_conf.set('PANGO_INTERFACE_AGE', pango_interface_age)
pango_conf.set('PANGO_VERSION_MAJOR', pango_major_version)
pango_conf.set('PANGO_VERSION_MINOR', pango_minor_version)
pango_conf.set('PANGO_VERSION_MICRO', pango_micro_version)
# Maintain version scheme with libtool
pango_soversion = '0.@0@.@1@'.format((pango_binary_age - pango_interface_age), pango_interface_age)
cc = meson.get_compiler('c')
host_system = host_machine.system()
# Compiler and linker flags
common_cflags = []
common_ldflags = []
# Add more compiler warnings to the default set
if cc.get_id() == 'msvc'
# Compiler options taken from msvc_recommended_pragmas.h
# in GLib, based on _Win32_Programming_ by Rector and Newcomer
test_cflags = [
'-we4002', # too many actual parameters for macro
'-we4003', # not enough actual parameters for macro
'-w14010', # single-line comment contains line-continuation character
'-we4013', # 'function' undefined; assuming extern returning int
'-w14016', # no function return type; using int as default
'-we4020', # too many actual parameters
'-we4021', # too few actual parameters
'-we4027', # function declared without formal parameter list
'-we4029', # declared formal parameter list different from definition
'-we4033', # 'function' must return a value
'-we4035', # 'function' : no return value
'-we4045', # array bounds overflow
'-we4047', # different levels of indirection
'-we4049', # terminating line number emission
'-we4053', # an expression of type void was used as an operand
'-we4071', # no function prototype given
'-we4819', # the file contains a character that cannot be represented in the current code page
]
elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
test_cflags = [
'-fno-strict-aliasing',
'-Wpointer-arith',
'-Wmissing-declarations',
'-Wimplicit-function-declaration',
'-Wformat=2',
'-Wformat-nonliteral',
'-Wformat-security',
'-Wstrict-prototypes',
'-Wmissing-prototypes',
'-Wnested-externs',
'-Wold-style-definition',
'-Wunused',
'-Wcast-align',
'-Wmissing-noreturn',
'-Wmissing-format-attribute',
'-Wmissing-include-dirs',
'-Wlogical-op',
'-Wno-uninitialized',
'-Wno-shadow',
'-Wno-int-conversion',
'-Wno-discarded-qualifiers',
'-Werror=redundant-decls',
'-Werror=implicit',
'-Werror=nonnull',
'-Werror=init-self',
'-Werror=main',
'-Werror=missing-braces',
'-Werror=sequence-point',
'-Werror=return-type',
'-Werror=trigraphs',
'-Werror=array-bounds',
'-Werror=write-strings',
'-Werror=address',
'-Werror=int-to-pointer-cast',
'-Werror=pointer-to-int-cast',
'-Werror=empty-body',
'-Werror=write-strings',
'-Werror=undef',
]
else
test_cflags = []
endif
foreach cflag: test_cflags
if cc.has_argument(cflag)
common_cflags += [ cflag ]
endif
endforeach
# Symbol visibility
if get_option('default_library') != 'static'
if host_machine.system() == 'windows'
pango_conf.set('DLL_EXPORT', true)
if cc.get_id() == 'msvc'
pango_conf.set('_PANGO_EXTERN', '__declspec(dllexport) extern')
else
pango_conf.set('_PANGO_EXTERN', '__attribute__((visibility("default"))) __declspec(dllexport) extern')
common_cflags += ['-fvisibility=hidden']
endif
else
pango_conf.set('_PANGO_EXTERN', '__attribute__((visibility("default"))) extern')
common_cflags += ['-fvisibility=hidden']
endif
endif
# Linker flags
if host_machine.system() == 'linux'
foreach ldflag: [ '-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now', ]
if cc.has_argument(ldflag)
common_ldflags += [ ldflag ]
endif
endforeach
endif
# Maintain compatibility with autotools on macOS
if host_machine.system() == 'darwin'
common_ldflags += [ '-compatibility_version=1', '-current_version=1.0', ]
endif
# Functions
checked_funcs = [
'sysconf',
'getpagesize',
'flockfile',
'strtok_r',
]
foreach f: checked_funcs
if cc.has_function(f)
pango_conf.set('HAVE_' + f.underscorify().to_upper(), 1)
endif
endforeach
# Headers
checked_headers = [
'unistd.h',
'sys/mman.h',
'dirent.h',
]
foreach h: checked_headers
if cc.has_header(h)
pango_conf.set('HAVE_' + h.underscorify().to_upper(), 1)
endif
endforeach
buildtype = get_option('buildtype')
if buildtype == 'debug' or buildtype == 'debugoptimized'
pango_debug_cflags = [ '-DPANGO_ENABLE_DEBUG', ]
elif buildtype == 'release'
pango_debug_cflags = [ '-DG_DISABLE_CAST_CHECKS', ]
else
pango_debug_cflags = []
endif
# Dependencies
pango_deps = []
glib_req_version = '>= 2.33.12'
libthai_req_version = '>= 0.1.9'
harfbuzz_req_version = '>= 1.2.3'
fontconfig_req_version = '>= 2.10.91'
xft_req_version = '>= 2.0.0'
cairo_req_version = '>= 1.12.10'
# libm
mathlib_dep = cc.find_library('m', required: false)
pango_deps += mathlib_dep
# gobject
gobject_dep = dependency('gobject-2.0', version: glib_req_version)
pango_deps += gobject_dep
thai_dep = dependency('libthai', version: libthai_req_version, required: false)
if thai_dep.found()
pango_conf.set('HAVE_LIBTHAI', 1)
pango_deps += thai_dep
endif
harfbuzz_dep = dependency('harfbuzz', version: harfbuzz_req_version, required: false)
if harfbuzz_dep.found()
pango_deps += harfbuzz_dep
endif
fontconfig_dep = dependency('fontconfig', version: fontconfig_req_version, required: false)
if fontconfig_dep.found()
pango_deps += fontconfig_dep
if cc.has_function('FcWeightFromOpenType', dependencies: fontconfig_dep)
pango_conf.set('HAVE_FCWEIGHTFROMOPENTYPE', 1)
endif
endif
# The first version of freetype with a pkg-config file is 2.1.5
freetype_dep = dependency('freetype2', required: false)
if freetype_dep.found()
pango_conf.set('HAVE_FREETYPE', 1)
pango_deps += freetype_dep
endif
xft_dep = dependency('xft', version: xft_req_version, required: false)
if xft_dep.found()
pango_conf.set('HAVE_XFT', 1)
pango_deps += dependency('xrender', required: false)
pango_deps += xft_dep
endif
if host_system == 'darwin'
has_core_text = cc.links('''#include <Carbon/Carbon.h>
int main (void) {
CTGetCoreTextVersion ();
return 0;
}''',
name: 'CoreText availability',
dependencies: dependency('appleframeworks', modules: 'ApplicationServices'))
if has_core_text
pango_conf.set('HAVE_CORE_TEXT', 1)
endif
endif
cairo_dep = dependency('cairo', version: cairo_req_version, required: false)
if cairo_dep.found()
# Check the following Cairo font backends
# - dependency
# - version
# - define
# - backend name
cairo_font_backends = [
[ 'cairo-ft', cairo_req_version, 'HAVE_CAIRO_FREETYPE', 'freetype', ],
[ 'cairo-win32', cairo_req_version, 'HAVE_CAIRO_WIN32', 'win32', ],
[ 'cairo-quartz', cairo_req_version, 'HAVE_CAIRO_QUARTZ', 'quartz', ],
]
pango_font_backends = []
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]
endif
endforeach
if pango_font_backends.length() == 0
error('No Cairo font backends found')
endif
# Check the following Cairo surface backends
# - dependency
# - version
# - define
# - backend name
cairo_surface_backends = [
[ 'cairo-png', cairo_req_version, 'HAVE_CAIRO_PNG', 'png', ],
[ 'cairo-ps', cairo_req_version, 'HAVE_CAIRO_PS', 'ps', ],
[ 'cairo-pdf', cairo_req_version, 'HAVE_CAIRO_PDF', 'pdf', ],
[ 'cairo-xlib', cairo_req_version, 'HAVE_CAIRO_XLIB', 'xlib', ],
]
pango_cairo_backends = []
foreach b: cairo_surface_backends
dep = dependency(b[0], version: b[1], required: false)
if dep.found()
pango_conf.set(b[2], 1)
pango_cairo_backends += b[3]
endif
endforeach
pango_conf.set('HAVE_CAIRO', 1)
pango_deps += cairo_dep
pangocairo_requires = []
if pango_font_backends.contains('freetype')
pangocairo_requires += 'pangoft2'
endif
if pango_font_backends.contains('win32')
pangocairo_requires += 'pangowin32'
endif
endif
# Compat variables for pkgconfig
pkgconf = configuration_data()
pkgconf.set('prefix', pango_prefix)
pkgconf.set('exec_prefix', pango_prefix)
pkgconf.set('libdir', pango_libdir)
pkgconf.set('includedir', pango_includedir)
pkgconf.set('VERSION', meson.project_version())
pkgconf.set('PANGO_API_VERSION', pango_api_version)
pkgconf.set('PKGCONFIG_CAIRO_REQUIRES', pangocairo_requires)
foreach pkg: [ 'pango.pc', 'pangowin32.pc', 'pangoft2.pc', 'pangoxft.pc', 'pangocairo.pc', ]
configure_file(input: '@0@.in'.format(pkg),
output: pkg,
configuration: pkgconf,
install: true,
install_dir: join_paths(pango_libdir, 'pkgconfig'))
endforeach
gnome = import('gnome')
# Internal configuration header
configure_file(output: 'config.h', configuration: pango_conf)
root_inc = include_directories('.')
subdir('pango')
subdir('examples')
subdir('pango-view')
subdir('tests')
subdir('tools')
if get_option('enable-gtk-doc')
subdir('docs')
endif
option('enable-gtk-doc',
description: 'Build API reference for Pango using GTK-Doc',
type: 'boolean',
default: 'false')
pango_view_sources = [
'pango-view.c',
'viewer-main.c',
'viewer-render.c',
]
pango_view_deps = [
pango_deps,
libpango_dep,
]
if freetype_dep.found()
pango_view_sources += 'viewer-pangoft2.c'
pango_view_deps += libpangoft2_dep
endif
if xft_dep.found()
pango_view_sources += [
'viewer-pangoxft.c',
'viewer-x.c',
]
pango_view_deps += [ libpangoft2_dep, libpangoxft_dep, ]
endif
if cairo_dep.found()
pango_view_sources += [
'viewer-cairo.c',
'viewer-pangocairo.c',
]
pango_view_deps += libpangocairo_dep
endif
executable('pango-view', pango_view_sources,
dependencies: pango_view_deps,
include_directories: [ root_inc ],
install: true,
c_args: [
'-DPACKAGE_NAME="@0@"'.format(meson.project_name()),
'-DPACKAGE_VERSION="@0@"'.format(meson.project_version()),
])
subdir('mini-fribidi')
pango_sources = [
'break.c',
'ellipsize.c',
'fonts.c',
'glyphstring.c',
'modules.c',
'pango-attributes.c',
'pango-bidi-type.c',
'pango-color.c',
'pango-context.c',
'pango-coverage.c',
'pango-engine.c',
'pango-fontmap.c',
'pango-fontset.c',
'pango-glyph-item.c',
'pango-gravity.c',
'pango-item.c',
'pango-language.c',
'pango-layout.c',
'pango-markup.c',
'pango-matrix.c',
'pango-renderer.c',
'pango-script.c',
'pango-tabs.c',
'pango-utils.c',
'reorder-items.c',
'shape.c',
]
pango_headers = [
'pango.h',
'pango-attributes.h',
'pango-bidi-type.h',
'pango-break.h',
'pango-context.h',
'pango-coverage.h',
'pango-engine.h',
'pango-font.h',
'pango-fontmap.h',
'pango-fontset.h',
'pango-glyph.h',
'pango-glyph-item.h',
'pango-gravity.h',
'pango-item.h',
'pango-language.h',
'pango-layout.h',
'pango-matrix.h',
'pango-modules.h',
'pango-renderer.h',
'pango-script.h',
'pango-tabs.h',
'pango-types.h',
'pango-utils.h',
'pango-version-macros.h',
]
install_headers(pango_headers, subdir: pango_api_path)
# Features header
pango_features_conf = configuration_data()
pango_features_conf.set('PANGO_VERSION_MAJOR', pango_major_version)
pango_features_conf.set('PANGO_VERSION_MINOR', pango_minor_version)
pango_features_conf.set('PANGO_VERSION_MICRO', pango_micro_version)
configure_file(input: 'pango-features.h.meson',
output: 'pango-features.h',
configuration: pango_features_conf,
install: true,
install_dir: join_paths(pango_includedir, pango_api_path))
# Enumerations for GType
pango_enums = gnome.mkenums('pango-enum-types',
sources: pango_headers,
c_template: 'pango-enum-types.c.template',
h_template: 'pango-enum-types.h.template',
install_dir: join_paths(pango_includedir, pango_api_path),
install_header: true)
pango_enum_h = pango_enums[1]
pango_cflags = [
'-DG_LOG_DOMAIN="Pango"',
'-DG_LOG_USE_STRUCTURED=1',
'-DPANGO_ENABLE_BACKEND',
'-DPANGO_ENABLE_ENGINE',
'-DSYSCONFDIR="@0@"'.format(pango_sysconfdir),
'-DLIBDIR="@0@"'.format(pango_libdir),
]
pango_inc = include_directories('.')
libpango = shared_library('pango-@0@'.format(pango_api_version),
sources: pango_sources + pango_enums,
soversion: pango_soversion,
install: true,
dependencies: [ gobject_dep, mathlib_dep, thai_dep, mini_fribidi_dep ],
include_directories: [ root_inc, pango_inc ],
c_args: common_cflags + pango_debug_cflags + pango_cflags,
link_args: common_ldflags)
libpango_dep = declare_dependency(link_with: libpango,
include_directories: pango_inc,
dependencies: pango_deps,
sources: pango_enums)
if not meson.is_cross_build()
gir_args = [
'--quiet',
'-DPANGO_ENABLE_BACKEND',
'-DPANGO_ENABLE_ENGINE',
]
pango_gir = gnome.generate_gir(libpango,
sources: pango_sources + pango_headers + [ pango_enum_h ],
namespace: 'Pango',
nsversion: pango_api_version,
identifier_prefix: 'Pango',
symbol_prefix: 'pango',
export_packages: 'pango',
includes: [ 'GObject-2.0', 'cairo-1.0', ],
install: true,
extra_args: gir_args + [
'--c-include=pango/pango.h',
])
pango_gir_dep = declare_dependency(sources: pango_gir)
endif
# FreeType
if freetype_dep.found()
pangoft2_headers = [
'pango-ot.h',
'pangofc-font.h',
'pangofc-fontmap.h',
'pangofc-decoder.h',
'pangoft2.h',
]
pangoft2_public_sources = [
'pangofc-font.c',
'pangofc-fontmap.c',
'pangofc-decoder.c',
'pangofc-shape.c',
'pangoft2.c',
]
pangoft2_sources = pangoft2_public_sources + [
'pangoft2-fontmap.c',
'pangoft2-render.c',
'pango-ot-buffer.c',
'pango-ot-info.c',
'pango-ot-ruleset.c',
'pango-ot-tag.c',
]
install_headers(pangoft2_headers, subdir: pango_api_path)
libpangoft2 = shared_library('libpangoft2-@0@'.format(pango_api_version),
sources: pangoft2_sources + [ pango_enum_h ],
soversion: pango_soversion,
install: true,
dependencies: pango_deps + [ libpango_dep ],
include_directories: [ root_inc, pango_inc ],
c_args: common_cflags + pango_debug_cflags + pango_cflags + [
'-DPANGO_DISABLE_DEPRECATION_WARNINGS',
],
link_args: common_ldflags)
libpangoft2_dep = declare_dependency(link_with: libpangoft2,
include_directories: pango_inc,
dependencies: pango_deps + [ libpango_dep ])
if not meson.is_cross_build()
pangoft2_gir = gnome.generate_gir(libpangoft2,
sources: pangoft2_headers + pangoft2_public_sources,
dependencies: pango_gir_dep,
namespace: 'PangoFT2',
nsversion: pango_api_version,
identifier_prefix: 'PangoFT2',
symbol_prefix: 'pango_ft2',
export_packages: 'pangoft2',
includes: [ 'GObject-2.0', 'cairo-1.0', 'freetype2-2.0', 'fontconfig-2.0', ],
install: true,
extra_args: gir_args + [
'--c-include=pango/pangoft2.h',
'--include-uninstalled=pango/Pango-1.0.gir',
])
pangoft2_gir_dep = declare_dependency(sources: pangoft2_gir)
endif
endif
# Xft
if xft_dep.found()
pangoxft_headers = [
'pangoxft.h',
'pangoxft-render.h',
]
pangoxft_sources = [
'pangoxft-font.c',
'pangoxft-fontmap.c',
'pangoxft-render.c',
]
install_headers(pangoxft_headers, subdir: pango_api_path)
libpangoxft = shared_library('libpangoxft-@0@'.format(pango_api_version),
sources: pangoxft_sources + [ pango_enum_h ],
soversion: pango_soversion,
install: true,
dependencies: pango_deps + [ libpango_dep, libpangoft2_dep ],
include_directories: [ root_inc, pango_inc ],
c_args: common_cflags + pango_debug_cflags + pango_cflags + [
'-DPANGO_DISABLE_DEPRECATION_WARNINGS',
],
link_args: common_ldflags)
libpangoxft_dep = declare_dependency(link_with: libpangoxft,
include_directories: root_inc,
dependencies: pango_deps + [ libpango_dep, libpangoft2_dep ])
if not meson.is_cross_build()
pangoxft_gir = gnome.generate_gir(libpangoxft,
sources: pangoxft_headers + pangoxft_sources,
dependencies: [ pango_gir_dep, pangoft2_gir_dep ],
namespace: 'PangoXft',
nsversion: pango_api_version,
identifier_prefix: 'PangoXft',
symbols_prefix: 'pango_xft',
export_packages: 'pangoxft',
includes: [ 'GObject-2.0', 'xft-2.0', 'xlib-2.0' ],
install: true,
extra_args: gir_args + [
'--c-include=pango/pangoxft.h',
'--include-uninstalled=pango/Pango-@0@.gir'.format(pango_api_version),
'--include-uninstalled=pango/PangoFT2-@0@.gir'.format(pango_api_version),
])
pangoxft_gir_dep = declare_dependency(sources: pangoxft_gir)
endif
endif
# Win32
if host_system.contains('windows')
pangowin32_headers = [