hb_base_sources = [ 'hb-blob.cc', 'hb-buffer-serialize.cc', 'hb-buffer.cc', 'hb-common.cc', 'hb-face.cc', 'hb-font.cc', 'hb-ot-tag.cc', 'hb-set.cc', 'hb-shape.cc', 'hb-shape-plan.cc', 'hb-shaper.cc', 'hb-unicode.cc', 'hb-warning.cc', ] hb_base_headers = [ 'hb.h', 'hb-blob.h', 'hb-buffer.h', 'hb-common.h', 'hb-deprecated.h', 'hb-face.h', 'hb-font.h', 'hb-set.h', 'hb-shape.h', 'hb-shape-plan.h', 'hb-unicode.h', 'hb-version.h', ] hb_base_ragel_sources = [ 'hb-buffer-deserialize-json.rl', 'hb-buffer-deserialize-text.rl', ] hb_fallback_sources = [ 'hb-fallback-shape.cc', ] hb_ot_sources = [ 'hb-aat-layout.cc', 'hb-ot-font.cc', 'hb-ot-layout.cc', 'hb-ot-color.cc', 'hb-ot-map.cc', 'hb-ot-math.cc', 'hb-ot-shape.cc', 'hb-ot-shape-complex-arabic.cc', 'hb-ot-shape-complex-default.cc', 'hb-ot-shape-complex-hangul.cc', 'hb-ot-shape-complex-hebrew.cc', 'hb-ot-shape-complex-indic.cc', 'hb-ot-shape-complex-indic-table.cc', 'hb-ot-shape-complex-khmer.cc', 'hb-ot-shape-complex-myanmar.cc', 'hb-ot-shape-complex-thai.cc', 'hb-ot-shape-complex-tibetan.cc', 'hb-ot-shape-complex-use.cc', 'hb-ot-shape-complex-use-table.cc', 'hb-ot-shape-normalize.cc', 'hb-ot-shape-fallback.cc', 'hb-ot-var.cc', ] hb_ot_headers = [ 'hb-ot.h', 'hb-ot-font.h', 'hb-ot-layout.h', 'hb-ot-math.h', 'hb-ot-shape.h', 'hb-ot-tag.h', 'hb-ot-var.h', ] hb_ot_ragel_sources = [ 'hb-ot-shape-complex-indic-machine.rl', 'hb-ot-shape-complex-khmer-machine.rl', 'hb-ot-shape-complex-myanmar-machine.rl', 'hb-ot-shape-complex-use-machine.rl', ] hb_ft_sources = [ 'hb-ft.cc', ] hb_ft_headers = [ 'hb-ft.h', ] hb_glib_sources = [ 'hb-glib.cc', ] hb_glib_headers = [ 'hb-glib.h', ] hb_graphite2_sources = [ 'hb-graphite2.cc', ] hb_graphite2_headers = [ 'hb-graphite2.h', ] hb_coretext_sources = [ 'hb-coretext.cc', ] hb_directwrite_sources = [ 'hb-directwrite.cc', ] hb_uniscribe_sources = [ 'hb-uniscribe.cc', ] hb_ucdn_sources = [ 'hb-ucdn.cc', 'hb-ucdn/ucdn.c', ] hb_icu_sources = [ 'hb-icu.cc', ] hb_icu_headers = [ 'hb-icu.h', ] hb_subset_sources = [ 'hb-subset.cc', 'hb-subset-glyf.cc', 'hb-subset-input.cc', 'hb-subset-plan.cc', ] hb_subset_headers = [ 'hb-subset.h', 'hb-subset-glyf.hh', 'hb-subset-plan.hh', 'hb-subset-private.hh', ] hb_gobject_sources = [ 'hb-gobject-structs.cc' ] hb_gobject_headers = [ 'hb-gobject.h', 'hb-gobject-structs.h', ] conf.set('HAVE_UCDN', 1) incucdn = include_directories('hb-ucdn') incsrc = include_directories('.') hb_sources = hb_base_sources + hb_fallback_sources + hb_ot_sources + hb_ucdn_sources hb_headers = hb_base_headers + hb_ot_headers if conf.get('HAVE_FREETYPE', 0) == 1 hb_sources += hb_ft_sources hb_headers += hb_ft_headers endif if conf.get('HAVE_GRAPHITE2', 0) == 1 hb_sources += hb_graphite2_sources hb_headers += hb_graphite2_headers endif if conf.get('HAVE_GLIB', 0) == 1 hb_sources += hb_glib_sources hb_headers += hb_glib_headers endif if conf.get('HAVE_ICU', 0) == 1 hb_sources += hb_icu_sources hb_headers += hb_icu_headers endif version = '0.' + '0'.join(meson.project_version().split('.')) + '.0' libharfbuzz = library('harfbuzz', hb_sources, include_directories: [incbase, incucdn], dependencies: deps, cpp_args: cpp_args, vs_module_defs: 'harfbuzz.def', soversion: '0', version: version, install: true, name_prefix: 'lib') libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources, include_directories: incbase, link_with: [libharfbuzz], cpp_args: cpp_args, vs_module_defs: 'harfbuzz-subset.def', soversion: '0', version: version, install: true, name_prefix: 'lib') pkgmod.generate(libharfbuzz, description: 'HarfBuzz text shaping library', version: meson.project_version(), ) pkgmod.generate(libharfbuzz_subset, description: 'HarfBuzz font subsetter', version: meson.project_version(), ) if conf.get('HAVE_GOBJECT', 0) == 1 gnome = import('gnome') h_templ = configure_file( input: 'hb-gobject-enums.h.tmpl', output: 'hb-gobject-enums-tmp.h.tmpl', configuration: configuration_data(), format: 'cmake') cc_templ = configure_file( input: 'hb-gobject-enums.cc.tmpl', output: 'hb-gobject-enums-tmp.cc.tmpl', configuration: configuration_data(), format: 'cmake') enums = gnome.mkenums('hb-gobject', sources: hb_headers, h_template: h_templ, c_template: cc_templ, identifier_prefix: 'hb_', symbol_prefix: 'hb_gobject', ) enum_c = custom_target('hb-gobject-enums.cc', input: enums[0], output: 'hb-gobject-enums.cc', command: [python3, files('fix_get_types.py')[0], '@INPUT@', '@OUTPUT@'] ) enum_h = custom_target('hb-gobject-enums.h', input: enums[1], output: 'hb-gobject-enums.h', command: [python3, files('fix_get_types.py')[0], '@INPUT@', '@OUTPUT@'], install: true, install_dir: join_paths(get_option('prefix'), get_option('includedir'), meson.project_name()), ) hb_gobject_sources += [enum_c] libharfbuzz_gobject = library('harfbuzz-gobject', [hb_gobject_sources, enum_c, enum_h], include_directories: incbase, dependencies: deps, link_with: [libharfbuzz], cpp_args: cpp_args, vs_module_defs: 'harfbuzz-gobject.def', soversion: '0', version: version, install: true, name_prefix: 'lib') pkgmod.generate(libharfbuzz_gobject, description: 'HarfBuzz text shaping library GObject integration', version: meson.project_version(), ) endif install_headers(hb_headers + hb_gobject_headers + hb_subset_headers, subdir: meson.project_name())