2020-03-24 12:34:33 +01:00
|
|
|
# Base and default-included sources and headers
|
2018-05-17 01:28:53 +02:00
|
|
|
hb_base_sources = [
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-aat-fdsc-table.hh',
|
|
|
|
'hb-aat-layout-ankr-table.hh',
|
|
|
|
'hb-aat-layout-bsln-table.hh',
|
|
|
|
'hb-aat-layout-common.hh',
|
|
|
|
'hb-aat-layout-feat-table.hh',
|
|
|
|
'hb-aat-layout-just-table.hh',
|
|
|
|
'hb-aat-layout-kerx-table.hh',
|
|
|
|
'hb-aat-layout-lcar-table.hh',
|
|
|
|
'hb-aat-layout-morx-table.hh',
|
|
|
|
'hb-aat-layout-opbd-table.hh',
|
|
|
|
'hb-aat-layout-trak-table.hh',
|
|
|
|
'hb-aat-layout.cc',
|
|
|
|
'hb-aat-layout.hh',
|
|
|
|
'hb-aat-ltag-table.hh',
|
|
|
|
'hb-aat-map.cc',
|
|
|
|
'hb-aat-map.hh',
|
|
|
|
'hb-algs.hh',
|
|
|
|
'hb-array.hh',
|
|
|
|
'hb-atomic.hh',
|
2020-06-11 23:08:16 +02:00
|
|
|
'hb-bimap.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-blob.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-blob.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-buffer-serialize.cc',
|
|
|
|
'hb-buffer.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-buffer.hh',
|
|
|
|
'hb-cache.hh',
|
|
|
|
'hb-cff-interp-common.hh',
|
|
|
|
'hb-cff-interp-cs-common.hh',
|
|
|
|
'hb-cff-interp-dict-common.hh',
|
|
|
|
'hb-cff1-interp-cs.hh',
|
|
|
|
'hb-cff2-interp-cs.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-common.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-config.hh',
|
|
|
|
'hb-debug.hh',
|
|
|
|
'hb-dispatch.hh',
|
|
|
|
'hb-draw.cc',
|
|
|
|
'hb-draw.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-face.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-face.hh',
|
|
|
|
'hb-fallback-shape.cc',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-font.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-font.hh',
|
|
|
|
'hb-iter.hh',
|
|
|
|
'hb-kern.hh',
|
|
|
|
'hb-machinery.hh',
|
2018-11-14 23:25:41 +01:00
|
|
|
'hb-map.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-map.hh',
|
|
|
|
'hb-meta.hh',
|
|
|
|
'hb-mutex.hh',
|
|
|
|
'hb-null.hh',
|
|
|
|
'hb-number.cc',
|
|
|
|
'hb-number.hh',
|
|
|
|
'hb-object.hh',
|
|
|
|
'hb-open-file.hh',
|
|
|
|
'hb-open-type.hh',
|
|
|
|
'hb-ot-cff-common.hh',
|
2020-06-11 23:08:16 +02:00
|
|
|
'hb-ot-cff1-std-str.hh',
|
2018-11-16 17:26:06 +01:00
|
|
|
'hb-ot-cff1-table.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-cff1-table.hh',
|
2018-11-16 17:26:06 +01:00
|
|
|
'hb-ot-cff2-table.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-cff2-table.hh',
|
|
|
|
'hb-ot-cmap-table.hh',
|
|
|
|
'hb-ot-color-cbdt-table.hh',
|
|
|
|
'hb-ot-color-colr-table.hh',
|
|
|
|
'hb-ot-color-cpal-table.hh',
|
|
|
|
'hb-ot-color-sbix-table.hh',
|
|
|
|
'hb-ot-color-svg-table.hh',
|
|
|
|
'hb-ot-color.cc',
|
2020-06-11 23:08:16 +02:00
|
|
|
'hb-ot-face-table-list.hh',
|
2018-11-14 23:25:41 +01:00
|
|
|
'hb-ot-face.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-face.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-font.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-gasp-table.hh',
|
|
|
|
'hb-ot-glyf-table.hh',
|
|
|
|
'hb-ot-hdmx-table.hh',
|
|
|
|
'hb-ot-head-table.hh',
|
|
|
|
'hb-ot-hhea-table.hh',
|
|
|
|
'hb-ot-hmtx-table.hh',
|
|
|
|
'hb-ot-kern-table.hh',
|
|
|
|
'hb-ot-layout-base-table.hh',
|
|
|
|
'hb-ot-layout-common.hh',
|
|
|
|
'hb-ot-layout-gdef-table.hh',
|
|
|
|
'hb-ot-layout-gpos-table.hh',
|
|
|
|
'hb-ot-layout-gsub-table.hh',
|
|
|
|
'hb-ot-layout-gsubgpos.hh',
|
|
|
|
'hb-ot-layout-jstf-table.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-layout.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-layout.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-map.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-map.hh',
|
|
|
|
'hb-ot-math-table.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-math.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-maxp-table.hh',
|
|
|
|
'hb-ot-meta-table.hh',
|
|
|
|
'hb-ot-meta.cc',
|
|
|
|
'hb-ot-metrics.cc',
|
|
|
|
'hb-ot-metrics.hh',
|
|
|
|
'hb-ot-name-language-static.hh',
|
|
|
|
'hb-ot-name-language.hh',
|
|
|
|
'hb-ot-name-table.hh',
|
|
|
|
'hb-ot-name.cc',
|
|
|
|
'hb-ot-os2-table.hh',
|
|
|
|
'hb-ot-os2-unicode-ranges.hh',
|
|
|
|
'hb-ot-post-macroman.hh',
|
|
|
|
'hb-ot-post-table.hh',
|
|
|
|
'hb-ot-shape-complex-arabic-fallback.hh',
|
|
|
|
'hb-ot-shape-complex-arabic-table.hh',
|
|
|
|
'hb-ot-shape-complex-arabic-win1256.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-shape-complex-arabic.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-shape-complex-arabic.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-shape-complex-default.cc',
|
|
|
|
'hb-ot-shape-complex-hangul.cc',
|
|
|
|
'hb-ot-shape-complex-hebrew.cc',
|
|
|
|
'hb-ot-shape-complex-indic-table.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-shape-complex-indic.cc',
|
|
|
|
'hb-ot-shape-complex-indic.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-shape-complex-khmer.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-shape-complex-khmer.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-shape-complex-myanmar.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-shape-complex-myanmar.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-shape-complex-thai.cc',
|
|
|
|
'hb-ot-shape-complex-use-table.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-shape-complex-use.cc',
|
|
|
|
'hb-ot-shape-complex-use.hh',
|
2018-11-14 23:25:41 +01:00
|
|
|
'hb-ot-shape-complex-vowel-constraints.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-shape-complex-vowel-constraints.hh',
|
|
|
|
'hb-ot-shape-complex.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-shape-fallback.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-shape-fallback.hh',
|
|
|
|
'hb-ot-shape-normalize.cc',
|
|
|
|
'hb-ot-shape-normalize.hh',
|
|
|
|
'hb-ot-shape.cc',
|
|
|
|
'hb-ot-shape.hh',
|
|
|
|
'hb-ot-stat-table.hh',
|
|
|
|
'hb-ot-tag-table.hh',
|
|
|
|
'hb-ot-tag.cc',
|
|
|
|
'hb-ot-var-avar-table.hh',
|
|
|
|
'hb-ot-var-fvar-table.hh',
|
|
|
|
'hb-ot-var-gvar-table.hh',
|
|
|
|
'hb-ot-var-hvar-table.hh',
|
|
|
|
'hb-ot-var-mvar-table.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-var.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-vorg-table.hh',
|
|
|
|
'hb-pool.hh',
|
|
|
|
'hb-sanitize.hh',
|
|
|
|
'hb-serialize.hh',
|
|
|
|
'hb-set-digest.hh',
|
|
|
|
'hb-set.cc',
|
|
|
|
'hb-set.hh',
|
|
|
|
'hb-shape-plan.cc',
|
|
|
|
'hb-shape-plan.hh',
|
|
|
|
'hb-shape.cc',
|
|
|
|
'hb-shaper-impl.hh',
|
|
|
|
'hb-shaper-list.hh',
|
|
|
|
'hb-shaper.cc',
|
|
|
|
'hb-shaper.hh',
|
|
|
|
'hb-static.cc',
|
|
|
|
'hb-string-array.hh',
|
2020-04-21 14:03:50 +02:00
|
|
|
'hb-style.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ucd-table.hh',
|
|
|
|
'hb-ucd.cc',
|
|
|
|
'hb-unicode-emoji-table.hh',
|
|
|
|
'hb-unicode.cc',
|
|
|
|
'hb-unicode.hh',
|
|
|
|
'hb-utf.hh',
|
|
|
|
'hb-vector.hh',
|
|
|
|
'hb.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
]
|
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_base_ragel_generated_sources = [
|
|
|
|
'hb-buffer-deserialize-json.hh',
|
2020-03-24 15:45:09 +01:00
|
|
|
'hb-buffer-deserialize-text.hh',
|
|
|
|
'hb-number-parser.hh',
|
|
|
|
'hb-ot-shape-complex-indic-machine.hh',
|
|
|
|
'hb-ot-shape-complex-khmer-machine.hh',
|
|
|
|
'hb-ot-shape-complex-myanmar-machine.hh',
|
|
|
|
'hb-ot-shape-complex-use-machine.hh',
|
2020-03-24 12:34:33 +01:00
|
|
|
]
|
|
|
|
hb_base_ragel_sources = [
|
|
|
|
'hb-buffer-deserialize-json.rl',
|
2020-03-24 15:45:09 +01:00
|
|
|
'hb-buffer-deserialize-text.rl',
|
|
|
|
'hb-number-parser.rl',
|
|
|
|
'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',
|
2020-03-24 12:34:33 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
hb_base_headers = [
|
|
|
|
'hb-aat-layout.h',
|
|
|
|
'hb-aat.h',
|
|
|
|
'hb-blob.h',
|
|
|
|
'hb-buffer.h',
|
|
|
|
'hb-common.h',
|
|
|
|
'hb-deprecated.h',
|
|
|
|
'hb-draw.h',
|
|
|
|
'hb-face.h',
|
|
|
|
'hb-font.h',
|
|
|
|
'hb-map.h',
|
2018-11-14 23:25:41 +01:00
|
|
|
'hb-ot-color.h',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-deprecated.h',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-font.h',
|
|
|
|
'hb-ot-layout.h',
|
|
|
|
'hb-ot-math.h',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot-meta.h',
|
|
|
|
'hb-ot-metrics.h',
|
2018-11-14 23:25:41 +01:00
|
|
|
'hb-ot-name.h',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-ot-shape.h',
|
|
|
|
'hb-ot-var.h',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-ot.h',
|
|
|
|
'hb-set.h',
|
|
|
|
'hb-shape-plan.h',
|
|
|
|
'hb-shape.h',
|
2020-04-21 14:03:50 +02:00
|
|
|
'hb-style.h',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-unicode.h',
|
|
|
|
'hb-version.h',
|
|
|
|
'hb.h',
|
2018-05-17 01:28:53 +02:00
|
|
|
]
|
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
# Optional Sources and Headers with external deps
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_ft_sources = ['hb-ft.cc']
|
|
|
|
hb_ft_headers = ['hb-ft.h']
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_glib_sources = ['hb-glib.cc']
|
|
|
|
hb_glib_headers = ['hb-glib.h']
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_graphite2_sources = ['hb-graphite2.cc']
|
|
|
|
hb_graphite2_headers = ['hb-graphite2.h']
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
# System-dependent sources and headers
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_coretext_sources = ['hb-coretext.cc']
|
|
|
|
hb_coretext_headers = ['hb-coretext.h']
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_directwrite_sources = ['hb-directwrite.cc']
|
|
|
|
hb_directwrite_headers = ['hb-directwrite.h']
|
|
|
|
|
|
|
|
hb_gdi_sources = ['hb-gdi.cc']
|
|
|
|
hb_gdi_headers = ['hb-gdi.h']
|
|
|
|
|
|
|
|
hb_uniscribe_sources = ['hb-uniscribe.cc']
|
|
|
|
hb_uniscribe_headers = ['hb-uniscribe.h']
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
# Sources for libharfbuzz-gobject and libharfbuzz-icu
|
|
|
|
hb_icu_sources = ['hb-icu.cc']
|
|
|
|
hb_icu_headers = ['hb-icu.h']
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
# Sources for libharfbuzz-subset
|
2018-05-17 01:28:53 +02:00
|
|
|
hb_subset_sources = [
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-number.cc',
|
|
|
|
'hb-number.hh',
|
2018-11-16 17:26:06 +01:00
|
|
|
'hb-ot-cff1-table.cc',
|
|
|
|
'hb-ot-cff2-table.cc',
|
2018-11-14 23:25:41 +01:00
|
|
|
'hb-static.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-subset-cff-common.cc',
|
|
|
|
'hb-subset-cff-common.hh',
|
2018-11-16 17:26:06 +01:00
|
|
|
'hb-subset-cff1.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-subset-cff1.hh',
|
2018-11-16 17:26:06 +01:00
|
|
|
'hb-subset-cff2.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-subset-cff2.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-subset-input.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-subset-input.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-subset-plan.cc',
|
2020-03-24 12:34:33 +01:00
|
|
|
'hb-subset-plan.hh',
|
|
|
|
'hb-subset-plan.hh',
|
|
|
|
'hb-subset.cc',
|
|
|
|
'hb-subset.hh',
|
|
|
|
'hb-subset.hh',
|
2018-05-17 01:28:53 +02:00
|
|
|
]
|
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_subset_headers = ['hb-subset.h']
|
2018-05-17 01:28:53 +02:00
|
|
|
|
|
|
|
hb_gobject_sources = [
|
|
|
|
'hb-gobject-structs.cc'
|
|
|
|
]
|
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_gobject_headers = [
|
2018-05-17 01:28:53 +02:00
|
|
|
'hb-gobject.h',
|
|
|
|
'hb-gobject-structs.h',
|
2020-03-24 12:34:33 +01:00
|
|
|
]
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-04-21 09:49:16 +02:00
|
|
|
custom_target('hb-version.h',
|
|
|
|
build_by_default: true,
|
|
|
|
input: 'hb-version.h.in',
|
|
|
|
output: 'hb-version.h',
|
|
|
|
command: [find_program('gen-hb-version.py'), meson.project_version(),
|
2020-06-04 01:01:15 +02:00
|
|
|
'hb-version.h.in', 'hb-version.h'])
|
2020-04-21 09:49:16 +02:00
|
|
|
|
|
|
|
ragel = find_program('ragel', required: false)
|
|
|
|
if not ragel.found()
|
2020-05-23 19:43:32 +02:00
|
|
|
warning('You have to install ragel if you are going to develop HarfBuzz itself')
|
2020-04-21 09:49:16 +02:00
|
|
|
else
|
2020-05-23 19:43:32 +02:00
|
|
|
custom_target('ragel header files',
|
|
|
|
build_by_default: true,
|
|
|
|
input: hb_base_ragel_sources,
|
|
|
|
output: '.ragel-artifacts',
|
|
|
|
command: [find_program('gen-ragel-artifacts.py')] + hb_base_ragel_sources)
|
2020-04-21 09:49:16 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
custom_target('harfbuzz.cc',
|
|
|
|
build_by_default: true,
|
|
|
|
output: 'harfbuzz.cc',
|
2020-06-03 21:10:57 +02:00
|
|
|
command: [find_program('gen-harfbuzzcc.py'), 'harfbuzz.cc'] +
|
2020-04-21 09:49:16 +02:00
|
|
|
hb_base_sources + hb_glib_sources + hb_ft_sources +
|
|
|
|
hb_graphite2_sources + hb_uniscribe_sources + hb_gdi_sources +
|
|
|
|
hb_directwrite_sources + hb_coretext_sources)
|
|
|
|
|
2018-05-17 01:28:53 +02:00
|
|
|
incsrc = include_directories('.')
|
|
|
|
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_sources = hb_base_sources + hb_base_ragel_generated_sources
|
|
|
|
hb_headers = hb_base_headers
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2020-06-03 23:52:10 +02:00
|
|
|
harfbuzz_deps = [thread_dep, m_dep] + harfbuzz_extra_deps
|
|
|
|
|
2018-05-17 01:28:53 +02:00
|
|
|
if conf.get('HAVE_FREETYPE', 0) == 1
|
|
|
|
hb_sources += hb_ft_sources
|
|
|
|
hb_headers += hb_ft_headers
|
2020-06-03 23:52:10 +02:00
|
|
|
harfbuzz_deps += [freetype_dep]
|
2018-05-17 01:28:53 +02:00
|
|
|
endif
|
|
|
|
|
2020-03-13 11:01:17 +01:00
|
|
|
if conf.get('HAVE_GDI', 0) == 1
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_sources += hb_gdi_sources
|
|
|
|
hb_headers += hb_gdi_headers
|
2020-06-03 23:52:10 +02:00
|
|
|
harfbuzz_deps += gdi_uniscribe_deps
|
2020-03-13 11:01:17 +01:00
|
|
|
endif
|
|
|
|
|
2018-05-17 01:28:53 +02:00
|
|
|
if conf.get('HAVE_GRAPHITE2', 0) == 1
|
|
|
|
hb_sources += hb_graphite2_sources
|
|
|
|
hb_headers += hb_graphite2_headers
|
2020-06-03 23:52:10 +02:00
|
|
|
harfbuzz_deps += [graphite2_dep]
|
2018-05-17 01:28:53 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
if conf.get('HAVE_GLIB', 0) == 1
|
|
|
|
hb_sources += hb_glib_sources
|
|
|
|
hb_headers += hb_glib_headers
|
2020-06-03 23:52:10 +02:00
|
|
|
harfbuzz_deps += [glib_dep]
|
2018-05-17 01:28:53 +02:00
|
|
|
endif
|
|
|
|
|
2018-11-12 17:56:56 +01:00
|
|
|
if conf.get('HAVE_UNISCRIBE', 0) == 1
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_sources += hb_uniscribe_sources
|
|
|
|
hb_headers += hb_uniscribe_headers
|
2018-11-12 17:56:56 +01:00
|
|
|
endif
|
|
|
|
|
2018-11-12 17:56:56 +01:00
|
|
|
if conf.get('HAVE_DIRECTWRITE', 0) == 1
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_sources += hb_directwrite_sources
|
|
|
|
hb_headers += hb_directwrite_headers
|
2020-06-03 23:52:10 +02:00
|
|
|
harfbuzz_deps += directwrite_dep
|
2018-11-12 17:56:56 +01:00
|
|
|
endif
|
|
|
|
|
2018-11-12 17:56:56 +01:00
|
|
|
if conf.get('HAVE_CORETEXT', 0) == 1
|
2020-03-24 12:34:33 +01:00
|
|
|
hb_sources += hb_coretext_sources
|
|
|
|
hb_headers += hb_coretext_headers
|
2020-06-03 23:52:10 +02:00
|
|
|
harfbuzz_deps += coretext_deps
|
2018-11-12 17:56:56 +01:00
|
|
|
endif
|
|
|
|
|
2020-04-18 22:24:24 +02:00
|
|
|
have_icu = conf.get('HAVE_ICU', 0) == 1
|
|
|
|
have_icu_builtin = conf.get('HAVE_ICU_BUILTIN', 0) == 1
|
|
|
|
|
|
|
|
if have_icu and have_icu_builtin
|
|
|
|
hb_sources += hb_icu_sources
|
|
|
|
hb_headers += hb_icu_headers
|
2020-06-03 23:52:10 +02:00
|
|
|
harfbuzz_deps += [icu_dep]
|
2020-04-18 22:24:24 +02:00
|
|
|
endif
|
|
|
|
|
2018-11-12 20:41:39 +01:00
|
|
|
# harfbuzz
|
|
|
|
gen_def = find_program('gen-def.py')
|
2020-04-20 22:43:13 +02:00
|
|
|
|
|
|
|
harfbuzz_def_command_args = [gen_def, '@OUTPUT@', '@INPUT@']
|
2020-05-21 17:03:18 +02:00
|
|
|
if get_option('experimental_api')
|
2020-04-20 22:43:13 +02:00
|
|
|
harfbuzz_def_command_args += '--experimental-api'
|
|
|
|
endif
|
|
|
|
|
2018-11-12 20:41:39 +01:00
|
|
|
harfbuzz_def = custom_target('harfbuzz.def',
|
2020-04-20 22:43:13 +02:00
|
|
|
command: harfbuzz_def_command_args,
|
2018-11-12 20:41:39 +01:00
|
|
|
input: hb_headers,
|
|
|
|
output: 'harfbuzz.def')
|
2020-05-10 11:42:20 +02:00
|
|
|
defs_list = [harfbuzz_def]
|
2018-11-12 20:41:39 +01:00
|
|
|
|
2018-06-05 02:15:43 +02:00
|
|
|
version = '0.' + '0'.join(meson.project_version().split('.')) + '.0'
|
|
|
|
|
2020-03-13 05:07:06 +01:00
|
|
|
extra_hb_cpp_args = []
|
2020-03-13 09:00:09 +01:00
|
|
|
if cpp.get_id() == 'msvc'
|
2020-06-09 16:36:50 +02:00
|
|
|
if get_option('default_library') != 'static'
|
2020-03-13 09:00:09 +01:00
|
|
|
extra_hb_cpp_args += '-DHB_DLL_EXPORT'
|
|
|
|
endif
|
|
|
|
hb_so_version = ''
|
|
|
|
else
|
|
|
|
hb_so_version = '0'
|
2020-03-13 05:07:06 +01:00
|
|
|
endif
|
|
|
|
|
2018-05-17 01:28:53 +02:00
|
|
|
libharfbuzz = library('harfbuzz', hb_sources,
|
2020-03-24 12:34:33 +01:00
|
|
|
include_directories: incconfig,
|
2020-06-03 23:52:10 +02:00
|
|
|
dependencies: harfbuzz_deps,
|
2020-03-13 05:07:06 +01:00
|
|
|
cpp_args: cpp_args + extra_hb_cpp_args,
|
2020-03-13 09:00:09 +01:00
|
|
|
soversion: hb_so_version,
|
2018-06-05 02:15:43 +02:00
|
|
|
version: version,
|
|
|
|
install: true,
|
2020-06-05 23:18:23 +02:00
|
|
|
link_language: 'c',
|
2020-05-10 12:16:16 +02:00
|
|
|
)
|
2018-05-17 01:28:53 +02:00
|
|
|
|
2018-10-12 16:11:49 +02:00
|
|
|
libharfbuzz_dep = declare_dependency(
|
|
|
|
link_with: libharfbuzz,
|
2020-03-24 12:34:33 +01:00
|
|
|
include_directories: incsrc,
|
2020-06-03 23:52:10 +02:00
|
|
|
dependencies: harfbuzz_deps)
|
2018-10-12 16:11:49 +02:00
|
|
|
|
2020-03-26 10:04:28 +01:00
|
|
|
# harfbuzz-subset
|
|
|
|
harfbuzz_subset_def = custom_target('harfbuzz-subset.def',
|
|
|
|
command: [gen_def, '@OUTPUT@', '@INPUT@'],
|
|
|
|
input: hb_subset_headers,
|
|
|
|
output: 'harfbuzz-subset.def')
|
2020-05-10 11:42:20 +02:00
|
|
|
defs_list += [harfbuzz_subset_def]
|
2020-03-26 10:04:28 +01:00
|
|
|
|
|
|
|
libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources,
|
|
|
|
include_directories: incconfig,
|
2020-06-03 23:52:10 +02:00
|
|
|
dependencies: [m_dep],
|
2020-03-26 10:04:28 +01:00
|
|
|
link_with: [libharfbuzz],
|
|
|
|
cpp_args: cpp_args + extra_hb_cpp_args,
|
|
|
|
soversion: hb_so_version,
|
|
|
|
version: version,
|
|
|
|
install: true,
|
2020-06-05 23:18:23 +02:00
|
|
|
link_language: 'c',
|
2020-05-10 12:16:16 +02:00
|
|
|
)
|
2020-03-26 10:04:28 +01:00
|
|
|
|
|
|
|
libharfbuzz_subset_dep = declare_dependency(
|
|
|
|
link_with: libharfbuzz_subset,
|
|
|
|
include_directories: incsrc,
|
2020-06-03 23:52:10 +02:00
|
|
|
dependencies: [m_dep])
|
2020-03-26 10:04:28 +01:00
|
|
|
|
2020-04-23 10:06:20 +02:00
|
|
|
if get_option('tests').enabled()
|
2020-04-23 10:08:45 +02:00
|
|
|
# TODO: MSVC gives the following,
|
|
|
|
# error LNK2019: unresolved external symbol "unsigned __int64 const * const _hb_NullPool"
|
|
|
|
if cpp.get_id() != 'msvc'
|
|
|
|
noinst_programs = {
|
|
|
|
'main': 'main.cc',
|
|
|
|
'test-basics': 'test.cc',
|
|
|
|
'test-buffer-serialize': 'test-buffer-serialize.cc',
|
|
|
|
'test-ot-meta': 'test-ot-meta.cc',
|
|
|
|
'test-ot-name': 'test-ot-name.cc',
|
|
|
|
'test-ot-glyphname': 'test-ot-glyphname.cc',
|
|
|
|
'test-ot-gpos-size-params': 'test-gpos-size-params.cc',
|
|
|
|
'test-ot-gsub-would-substitute': 'test-gsub-would-substitute.cc',
|
|
|
|
}
|
|
|
|
foreach name, source : noinst_programs
|
|
|
|
executable(name, source,
|
|
|
|
include_directories: incconfig,
|
|
|
|
cpp_args: cpp_args,
|
|
|
|
dependencies: libharfbuzz_dep,
|
|
|
|
install: false,
|
|
|
|
)
|
|
|
|
endforeach
|
|
|
|
endif
|
2020-05-10 11:42:20 +02:00
|
|
|
|
2020-04-23 10:08:45 +02:00
|
|
|
check_programs = {
|
|
|
|
'dump-indic-data': ['dump-indic-data.cc', 'hb-ot-shape-complex-indic-table.cc'],
|
|
|
|
'dump-khmer-data': ['dump-khmer-data.cc', 'hb-ot-shape-complex-indic-table.cc'],
|
|
|
|
'dump-myanmar-data': ['dump-myanmar-data.cc', 'hb-ot-shape-complex-indic-table.cc'],
|
|
|
|
'dump-use-data': ['dump-use-data.cc', 'hb-ot-shape-complex-use-table.cc'],
|
2020-03-24 19:13:02 +01:00
|
|
|
}
|
2020-04-23 10:08:45 +02:00
|
|
|
foreach name, source : check_programs
|
2020-03-24 19:13:02 +01:00
|
|
|
executable(name, source,
|
|
|
|
include_directories: incconfig,
|
|
|
|
cpp_args: cpp_args,
|
|
|
|
dependencies: libharfbuzz_dep,
|
|
|
|
install: false,
|
|
|
|
)
|
|
|
|
endforeach
|
2020-05-10 11:42:20 +02:00
|
|
|
|
2020-04-23 10:08:45 +02:00
|
|
|
compiled_tests = {
|
|
|
|
'test-array': 'test-array.cc',
|
|
|
|
'test-number': ['test-number.cc', 'hb-number.cc'],
|
|
|
|
'test-ot-tag': 'hb-ot-tag.cc',
|
|
|
|
'test-unicode-ranges': 'test-unicode-ranges.cc',
|
2020-03-24 15:25:56 +01:00
|
|
|
}
|
2020-04-23 10:08:45 +02:00
|
|
|
if cpp.get_id() != 'msvc'
|
|
|
|
# TODO: MSVC doesn't like these, fix them
|
|
|
|
compiled_tests += {
|
|
|
|
'test-algs': ['test-algs.cc', 'hb-static.cc'],
|
|
|
|
'test-bimap': ['test-bimap.cc', 'hb-static.cc'],
|
|
|
|
'test-iter': ['test-iter.cc', 'hb-static.cc'],
|
|
|
|
'test-meta': ['test-meta.cc', 'hb-static.cc'],
|
|
|
|
}
|
2020-03-24 15:25:01 +01:00
|
|
|
endif
|
2020-04-23 10:08:45 +02:00
|
|
|
foreach name, source : compiled_tests
|
|
|
|
test(name, executable(name, source,
|
|
|
|
include_directories: incconfig,
|
|
|
|
cpp_args: cpp_args + ['-DMAIN', '-UNDEBUG'],
|
|
|
|
dependencies: libharfbuzz_dep,
|
|
|
|
install: false,
|
2020-05-30 11:47:56 +02:00
|
|
|
), suite: ['src'])
|
2020-03-24 12:34:33 +01:00
|
|
|
endforeach
|
2020-04-23 10:06:20 +02:00
|
|
|
endif
|
2018-10-12 16:11:49 +02:00
|
|
|
|
2018-06-05 02:15:43 +02:00
|
|
|
pkgmod.generate(libharfbuzz,
|
|
|
|
description: 'HarfBuzz text shaping library',
|
2018-06-05 18:19:29 +02:00
|
|
|
subdirs: [meson.project_name()],
|
2018-06-05 02:15:43 +02:00
|
|
|
version: meson.project_version(),
|
|
|
|
)
|
|
|
|
|
|
|
|
pkgmod.generate(libharfbuzz_subset,
|
|
|
|
description: 'HarfBuzz font subsetter',
|
2018-06-05 18:19:29 +02:00
|
|
|
subdirs: [meson.project_name()],
|
2018-06-05 02:15:43 +02:00
|
|
|
version: meson.project_version(),
|
|
|
|
)
|
|
|
|
|
2020-04-18 22:24:24 +02:00
|
|
|
if have_icu and not have_icu_builtin
|
2020-05-10 11:42:20 +02:00
|
|
|
harfbuzz_icu_def = custom_target('harfbuzz-icu.def',
|
|
|
|
command: [gen_def, '@OUTPUT@', '@INPUT@'],
|
|
|
|
input: [hb_icu_headers],
|
|
|
|
output: 'harfbuzz-icu.def')
|
|
|
|
defs_list += [harfbuzz_icu_def]
|
|
|
|
|
2020-04-18 20:22:45 +02:00
|
|
|
libharfbuzz_icu = library('harfbuzz-icu', [hb_icu_sources, hb_icu_headers],
|
|
|
|
include_directories: incconfig,
|
|
|
|
dependencies: icu_dep,
|
|
|
|
link_with: [libharfbuzz],
|
|
|
|
cpp_args: cpp_args + extra_hb_cpp_args,
|
|
|
|
soversion: hb_so_version,
|
|
|
|
version: version,
|
|
|
|
install: true,
|
2020-05-10 11:50:27 +02:00
|
|
|
# ICU links to stdc++ anyway so the default linker is good
|
2020-06-05 23:18:23 +02:00
|
|
|
# link_language: 'c',
|
2020-05-10 12:16:16 +02:00
|
|
|
)
|
2020-04-18 20:22:45 +02:00
|
|
|
|
|
|
|
libharfbuzz_icu_dep = declare_dependency(
|
|
|
|
link_with: libharfbuzz_icu,
|
|
|
|
include_directories: incsrc,
|
2020-06-03 23:52:10 +02:00
|
|
|
dependencies: icu_dep)
|
2020-04-18 20:22:45 +02:00
|
|
|
|
|
|
|
pkgmod.generate(libharfbuzz_icu,
|
|
|
|
description: 'HarfBuzz text shaping library ICU integration',
|
|
|
|
subdirs: [meson.project_name()],
|
|
|
|
version: meson.project_version(),
|
|
|
|
)
|
2020-04-19 14:57:04 +02:00
|
|
|
|
|
|
|
install_headers(hb_icu_headers, subdir: meson.project_name())
|
2020-04-18 20:22:45 +02:00
|
|
|
else
|
|
|
|
libharfbuzz_icu_dep = dependency('', required: false)
|
|
|
|
endif
|
|
|
|
|
2018-12-03 20:51:06 +01:00
|
|
|
have_gobject = conf.get('HAVE_GOBJECT', 0) == 1
|
|
|
|
|
|
|
|
cmake_config = configuration_data()
|
|
|
|
cmake_config.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
|
|
|
|
cmake_config.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
|
|
|
|
cmake_config.set('HB_LIBTOOL_VERSION_INFO', hb_libtool_version_info)
|
|
|
|
cmake_config.set('have_gobject', have_gobject ? 'true' : 'false')
|
|
|
|
configure_file(input: 'harfbuzz-config.cmake.in',
|
|
|
|
output: 'harfbuzz-config.cmake',
|
|
|
|
configuration: cmake_config,
|
2020-05-21 14:31:04 +02:00
|
|
|
install_dir: get_option('libdir') / 'cmake' / 'harfbuzz')
|
2018-12-03 20:51:06 +01:00
|
|
|
|
|
|
|
if have_gobject
|
2018-05-17 01:28:53 +02:00
|
|
|
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',
|
2020-05-21 17:32:47 +02:00
|
|
|
command: [find_program('fix_get_types.py'), '@INPUT@', '@OUTPUT@']
|
2018-05-17 01:28:53 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
enum_h = custom_target('hb-gobject-enums.h',
|
|
|
|
input: enums[1],
|
|
|
|
output: 'hb-gobject-enums.h',
|
2020-05-21 17:32:47 +02:00
|
|
|
command: [find_program('fix_get_types.py'), '@INPUT@', '@OUTPUT@'],
|
2018-06-05 02:15:43 +02:00
|
|
|
install: true,
|
2020-05-21 14:31:04 +02:00
|
|
|
install_dir: get_option('prefix') / get_option('includedir') / meson.project_name(),
|
2018-05-17 01:28:53 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
hb_gobject_sources += [enum_c]
|
|
|
|
|
2018-11-12 20:41:39 +01:00
|
|
|
harfbuzz_gobject_def = custom_target('harfbuzz-gobject.def',
|
|
|
|
command: [gen_def, '@OUTPUT@', '@INPUT@'],
|
|
|
|
input: [hb_gobject_headers, enum_h],
|
|
|
|
output: 'harfbuzz-gobject.def')
|
2020-05-10 11:42:20 +02:00
|
|
|
defs_list += [harfbuzz_gobject_def]
|
2018-11-12 20:41:39 +01:00
|
|
|
|
2018-05-17 01:28:53 +02:00
|
|
|
libharfbuzz_gobject = library('harfbuzz-gobject', [hb_gobject_sources, enum_c, enum_h],
|
2018-11-14 21:19:36 +01:00
|
|
|
include_directories: incconfig,
|
2020-06-03 23:52:10 +02:00
|
|
|
dependencies: [glib_dep, gobject_dep],
|
2018-05-17 01:28:53 +02:00
|
|
|
link_with: [libharfbuzz],
|
2020-03-13 05:07:06 +01:00
|
|
|
cpp_args: cpp_args + extra_hb_cpp_args,
|
2020-03-13 09:00:09 +01:00
|
|
|
soversion: hb_so_version,
|
2018-06-05 02:15:43 +02:00
|
|
|
version: version,
|
|
|
|
install: true,
|
2020-06-05 23:18:23 +02:00
|
|
|
link_language: 'c',
|
2020-05-10 12:16:16 +02:00
|
|
|
)
|
2018-06-05 02:15:43 +02:00
|
|
|
|
2018-11-14 14:49:03 +01:00
|
|
|
gir = find_program('g-ir-scanner', required: get_option('introspection'))
|
|
|
|
build_gir = gir.found() and not meson.is_cross_build()
|
|
|
|
|
|
|
|
if build_gir
|
2020-05-21 13:58:24 +02:00
|
|
|
conf.set('HAVE_INTROSPECTION', 1)
|
2018-11-14 14:49:03 +01:00
|
|
|
hb_gen_files_gir = gnome.generate_gir(libharfbuzz, libharfbuzz_gobject,
|
|
|
|
sources: [hb_headers, hb_sources, hb_gobject_headers, hb_gobject_sources, enum_h],
|
|
|
|
namespace: 'HarfBuzz',
|
|
|
|
nsversion: '0.0',
|
|
|
|
identifier_prefix: 'hb_',
|
2020-04-18 14:37:03 +02:00
|
|
|
symbol_prefix: ['hb', 'hb_gobject'],
|
2018-11-14 14:49:03 +01:00
|
|
|
includes: ['GObject-2.0'],
|
2020-04-18 14:37:03 +02:00
|
|
|
export_packages: ['harfbuzz-gobject'],
|
|
|
|
header: 'hb-gobject.h',
|
2018-11-14 14:49:03 +01:00
|
|
|
install: true,
|
|
|
|
extra_args: ['--cflags-begin',
|
|
|
|
'-DHB_H',
|
|
|
|
'-DHB_H_IN',
|
|
|
|
'-DHB_OT_H',
|
|
|
|
'-DHB_OT_H_IN',
|
2020-04-18 14:37:03 +02:00
|
|
|
'-DHB_AAT_H',
|
|
|
|
'-DHB_AAT_H_IN',
|
2018-11-14 14:49:03 +01:00
|
|
|
'-DHB_GOBJECT_H',
|
|
|
|
'-DHB_GOBJECT_H_IN',
|
|
|
|
'-DHB_EXTERN=',
|
|
|
|
'--cflags-end'])
|
|
|
|
endif
|
|
|
|
|
2018-10-12 16:11:49 +02:00
|
|
|
libharfbuzz_gobject_dep = declare_dependency(
|
|
|
|
link_with: libharfbuzz_gobject,
|
2018-11-14 20:05:47 +01:00
|
|
|
include_directories: incsrc,
|
2020-03-13 05:15:28 +01:00
|
|
|
sources: build_gir ? hb_gen_files_gir : hb_gobject_sources,
|
2020-06-03 23:52:10 +02:00
|
|
|
dependencies: [glib_dep, gobject_dep])
|
2018-10-12 16:11:49 +02:00
|
|
|
|
2018-06-05 02:15:43 +02:00
|
|
|
pkgmod.generate(libharfbuzz_gobject,
|
|
|
|
description: 'HarfBuzz text shaping library GObject integration',
|
2018-06-05 18:19:29 +02:00
|
|
|
subdirs: [meson.project_name()],
|
2018-06-05 02:15:43 +02:00
|
|
|
version: meson.project_version(),
|
|
|
|
)
|
2020-04-19 14:57:04 +02:00
|
|
|
|
|
|
|
install_headers(hb_gobject_headers, subdir: meson.project_name())
|
2018-10-12 16:11:49 +02:00
|
|
|
else
|
2020-05-16 09:27:05 +02:00
|
|
|
if get_option('introspection').enabled()
|
|
|
|
error('introspection requires gobject to be enabled')
|
|
|
|
endif
|
|
|
|
|
2018-10-12 16:11:49 +02:00
|
|
|
libharfbuzz_gobject_dep = dependency('', required: false)
|
2018-05-17 01:28:53 +02:00
|
|
|
endif
|
2018-06-05 02:15:43 +02:00
|
|
|
|
2020-05-29 10:04:30 +02:00
|
|
|
if get_option('tests').enabled()
|
|
|
|
dist_check_script = [
|
|
|
|
'check-c-linkage-decls',
|
|
|
|
'check-externs',
|
|
|
|
'check-header-guards',
|
|
|
|
'check-includes',
|
|
|
|
]
|
|
|
|
|
|
|
|
env = environment()
|
|
|
|
env.set('srcdir', meson.current_source_dir())
|
|
|
|
env.set('builddir', meson.current_build_dir())
|
|
|
|
env.set('libs', meson.current_build_dir()) # TODO: Merge this with builddir after autotools removal
|
2020-06-04 00:49:53 +02:00
|
|
|
env.set('HBSOURCES', ' '.join(hb_sources))
|
2020-05-29 10:04:30 +02:00
|
|
|
env.set('HBHEADERS', ' '.join(hb_headers))
|
|
|
|
|
|
|
|
if cpp.get_id() != 'msvc' and not meson.is_cross_build() # ensure the local tools are usable
|
2020-06-05 23:18:23 +02:00
|
|
|
dist_check_script += ['check-libstdc++', 'check-static-inits', 'check-symbols']
|
2020-05-29 10:04:30 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
foreach name : dist_check_script
|
2020-05-30 11:47:56 +02:00
|
|
|
test(name, find_program(name + '.py'),
|
|
|
|
env: env,
|
|
|
|
depends: name == 'check-symbols' ? defs_list : [],
|
|
|
|
suite: ['src'],
|
|
|
|
)
|
2020-05-29 10:04:30 +02:00
|
|
|
endforeach
|
2020-05-10 11:42:20 +02:00
|
|
|
endif
|
|
|
|
|
2020-04-19 14:57:04 +02:00
|
|
|
install_headers(hb_headers + hb_subset_headers, subdir: meson.project_name())
|