1# Process this file with automake to produce Makefile.in 2 3NULL = 4SUBDIRS = 5DIST_SUBDIRS = 6BUILT_SOURCES = 7EXTRA_DIST = 8CLEANFILES = 9DISTCLEANFILES = 10MAINTAINERCLEANFILES = 11DISTCHECK_CONFIGURE_FLAGS = --enable-introspection 12TESTS = 13check_PROGRAMS = 14 15# Convenience targets: 16lib: $(BUILT_SOURCES) libharfbuzz.la 17libs: $(BUILT_SOURCES) $(lib_LTLIBRARIES) 18 19lib_LTLIBRARIES = libharfbuzz.la 20 21include Makefile.sources 22 23HBCFLAGS = 24HBLIBS = 25HBNONPCLIBS = 26HBDEPS = 27HBSOURCES = $(HB_BASE_sources) 28HBSOURCES += $(HB_BASE_RAGEL_GENERATED_sources) 29HBHEADERS = $(HB_BASE_headers) 30 31if HAVE_FALLBACK 32HBSOURCES += $(HB_FALLBACK_sources) 33endif 34 35if HAVE_PTHREAD 36HBCFLAGS += $(PTHREAD_CFLAGS) 37HBNONPCLIBS += $(PTHREAD_LIBS) 38endif 39 40if HAVE_GLIB 41HBCFLAGS += $(GLIB_CFLAGS) 42HBLIBS += $(GLIB_LIBS) 43HBDEPS += $(GLIB_DEPS) 44HBSOURCES += $(HB_GLIB_sources) 45HBHEADERS += $(HB_GLIB_headers) 46endif 47 48if HAVE_FREETYPE 49HBCFLAGS += $(FREETYPE_CFLAGS) 50HBLIBS += $(FREETYPE_LIBS) 51# XXX 52# The following creates a recursive dependency on FreeType if FreeType is 53# built with HarfBuzz support enabled. Newer pkg-config handles that just 54# fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove 55# in a year or two, or otherwise work around it... 56#HBDEPS += $(FREETYPE_DEPS) 57HBSOURCES += $(HB_FT_sources) 58HBHEADERS += $(HB_FT_headers) 59endif 60 61if HAVE_GRAPHITE2 62HBCFLAGS += $(GRAPHITE2_CFLAGS) 63HBLIBS += $(GRAPHITE2_LIBS) 64HBDEPS += $(GRAPHITE2_DEPS) 65HBSOURCES += $(HB_GRAPHITE2_sources) 66HBHEADERS += $(HB_GRAPHITE2_headers) 67endif 68 69if HAVE_UNISCRIBE 70HBCFLAGS += $(UNISCRIBE_CFLAGS) 71HBNONPCLIBS += $(UNISCRIBE_LIBS) 72HBSOURCES += $(HB_UNISCRIBE_sources) 73HBHEADERS += $(HB_UNISCRIBE_headers) 74endif 75 76if HAVE_DIRECTWRITE 77HBCFLAGS += $(DIRECTWRITE_CXXFLAGS) 78HBNONPCLIBS += $(DIRECTWRITE_LIBS) 79HBSOURCES += $(HB_DIRECTWRITE_sources) 80HBHEADERS += $(HB_DIRECTWRITE_headers) 81endif 82 83if HAVE_CORETEXT 84HBCFLAGS += $(CORETEXT_CFLAGS) 85HBNONPCLIBS += $(CORETEXT_LIBS) 86HBSOURCES += $(HB_CORETEXT_sources) 87HBHEADERS += $(HB_CORETEXT_headers) 88endif 89 90 91BUILT_SOURCES += \ 92 hb-version.h 93 94$(srcdir)/hb-version.h: hb-version.h.in $(top_srcdir)/configure.ac 95 $(AM_V_GEN) $(SED) \ 96 -e 's/[@]HB_VERSION_MAJOR@/$(HB_VERSION_MAJOR)/' \ 97 -e 's/[@]HB_VERSION_MINOR@/$(HB_VERSION_MINOR)/' \ 98 -e 's/[@]HB_VERSION_MICRO@/$(HB_VERSION_MICRO)/' \ 99 -e 's/[@]HB_VERSION@/$(HB_VERSION)/' \ 100 "$<" > "$@" || ($(RM) "$@"; false) 101 102# Put the library together 103 104HBLIBS += $(HBNONPCLIBS) 105 106if OS_WIN32 107export_symbols = -export-symbols harfbuzz.def 108harfbuzz_def_dependency = harfbuzz.def 109export_symbols_subset = -export-symbols harfbuzz-subset.def 110harfbuzz_subset_def_dependency = harfbuzz-subset.def 111export_symbols_icu = -export-symbols harfbuzz-icu.def 112harfbuzz_icu_def_dependency = harfbuzz-icu.def 113export_symbols_gobject = -export-symbols harfbuzz-gobject.def 114harfbuzz_gobject_def_dependency = harfbuzz-gobject.def 115chosen_linker = $(CXXLINK) 116else 117if WITH_LIBSTDCXX 118chosen_linker = $(CXXLINK) 119else 120if HAVE_GCC 121# Use a C linker for GCC, not C++; Don't link to libstdc++ 122chosen_linker = $(LINK) 123else 124chosen_linker = $(CXXLINK) 125endif 126endif 127endif 128 129@CODE_COVERAGE_RULES@ 130 131base_link_flags = $(AM_LDFLAGS) -lm -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined 132libharfbuzz_la_LINK = $(chosen_linker) $(libharfbuzz_la_LDFLAGS) 133libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS) 134libharfbuzz_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS) 135libharfbuzz_la_LDFLAGS = $(base_link_flags) $(export_symbols) $(CODE_COVERAGE_LDFLAGS) 136libharfbuzz_la_LIBADD = $(HBLIBS) 137EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency) 138pkginclude_HEADERS = $(HBHEADERS) 139nodist_pkginclude_HEADERS = 140pkgconfigdir = $(libdir)/pkgconfig 141pkgconfig_DATA = harfbuzz.pc 142cmakedir = $(libdir)/cmake/harfbuzz 143cmake_DATA = harfbuzz-config.cmake 144EXTRA_DIST += hb-version.h.in harfbuzz.pc.in harfbuzz-config.cmake.in 145 146lib_LTLIBRARIES += libharfbuzz-subset.la 147libharfbuzz_subset_la_SOURCES = $(HB_SUBSET_sources) 148libharfbuzz_subset_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS) 149libharfbuzz_subset_la_LDFLAGS = $(base_link_flags) $(export_symbols_subset) $(CODE_COVERAGE_LDFLAGS) 150libharfbuzz_subset_la_LIBADD = libharfbuzz.la 151EXTRA_libharfbuzz_subset_la_DEPENDENCIES = $(harfbuzz_subset_def_dependency) 152pkginclude_HEADERS += $(HB_SUBSET_headers) 153pkgconfig_DATA += harfbuzz-subset.pc 154EXTRA_DIST += harfbuzz-subset.pc.in 155 156if HAVE_ICU 157if HAVE_ICU_BUILTIN 158HBCFLAGS += $(ICU_CFLAGS) 159HBLIBS += $(ICU_LIBS) 160HBSOURCES += $(HB_ICU_sources) 161HBHEADERS += $(HB_ICU_headers) 162else 163lib_LTLIBRARIES += libharfbuzz-icu.la 164libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources) 165libharfbuzz_icu_la_CPPFLAGS = $(HBCFLAGS) $(ICU_CFLAGS) $(CODE_COVERAGE_CFLAGS) 166libharfbuzz_icu_la_LDFLAGS = $(base_link_flags) $(export_symbols_icu) $(CODE_COVERAGE_LDFLAGS) 167libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la 168EXTRA_libharfbuzz_icu_la_DEPENDENCIES = $(harfbuzz_icu_def_dependency) 169pkginclude_HEADERS += $(HB_ICU_headers) 170pkgconfig_DATA += harfbuzz-icu.pc 171endif 172endif 173EXTRA_DIST += harfbuzz-icu.pc.in 174 175if HAVE_GOBJECT 176lib_LTLIBRARIES += libharfbuzz-gobject.la 177libharfbuzz_gobject_la_LINK = $(chosen_linker) $(libharfbuzz_gobject_la_LDFLAGS) 178libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_DIST_sources) 179nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_NODIST_sources) 180libharfbuzz_gobject_la_CPPFLAGS = $(HBCFLAGS) $(GOBJECT_CFLAGS) $(CODE_COVERAGE_CFLAGS) 181libharfbuzz_gobject_la_LDFLAGS = $(base_link_flags) $(CODE_COVERAGE_LDFLAGS) 182libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la 183EXTRA_libharfbuzz_gobject_la_DEPENDENCIES = $(harfbuzz_gobject_def_dependency) 184pkginclude_HEADERS += $(HB_GOBJECT_DIST_headers) 185nodist_pkginclude_HEADERS += $(HB_GOBJECT_NODIST_headers) 186pkgconfig_DATA += harfbuzz-gobject.pc 187 188BUILT_SOURCES += \ 189 $(HB_GOBJECT_ENUM_sources) \ 190 $(HB_GOBJECT_ENUM_headers) \ 191 $(NULL) 192DISTCLEANFILES += \ 193 $(HB_GOBJECT_ENUM_sources) \ 194 $(HB_GOBJECT_ENUM_headers) \ 195 $(NULL) 196hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS) 197 $(AM_V_GEN) PYTHONIOENCODING=UTF-8 $(GLIB_MKENUMS) \ 198 --identifier-prefix hb_ --symbol-prefix hb_gobject \ 199 --template $^ | \ 200 sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \ 201 || ($(RM) "$@"; false) 202endif 203EXTRA_DIST += \ 204 harfbuzz-gobject.pc.in \ 205 hb-gobject-enums.cc.tmpl \ 206 hb-gobject-enums.h.tmpl \ 207 $(NULL) 208 209 210%.pc: %.pc.in $(top_builddir)/config.status 211 $(AM_V_GEN) \ 212 $(SED) -e 's@%prefix%@$(prefix)@g' \ 213 -e 's@%exec_prefix%@$(exec_prefix)@g' \ 214 -e 's@%libdir%@$(libdir)@g' \ 215 -e 's@%includedir%@$(includedir)@g' \ 216 -e 's@%libs_private%@$(HBNONPCLIBS)@g' \ 217 -e 's@%requires_private%@$(HBDEPS)@g' \ 218 -e 's@%VERSION%@$(VERSION)@g' \ 219 "$<" > "$@" \ 220 || ($(RM) "$@"; false) 221 222CLEANFILES += $(pkgconfig_DATA) 223 224 225DEF_FILES = harfbuzz.def harfbuzz-subset.def harfbuzz-icu.def harfbuzz-deprecated-symbols.txt 226if HAVE_GOBJECT 227DEF_FILES += harfbuzz-gobject.def 228endif 229check: $(DEF_FILES) # For check-symbols.sh 230CLEANFILES += $(DEF_FILES) 231harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS) 232 $(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^ 233harfbuzz-subset.def: $(HB_SUBSET_headers) 234 $(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^ 235harfbuzz-icu.def: $(HB_ICU_headers) 236 $(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^ 237harfbuzz-gobject.def: $(HB_GOBJECT_headers) 238 $(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^ 239harfbuzz-deprecated-symbols.txt: $(srcdir)/hb-deprecated.h 240 $(AM_V_GEN) PLAIN_LIST=1 $(srcdir)/gen-def.py "$@" $^ 241 242 243GENERATORS = \ 244 gen-arabic-table.py \ 245 gen-def.py \ 246 gen-emoji-table.py \ 247 gen-indic-table.py \ 248 gen-os2-unicode-ranges.py \ 249 gen-tag-table.py \ 250 gen-ucd-table.py \ 251 gen-use-table.py \ 252 gen-vowel-constraints.py \ 253 $(NULL) 254EXTRA_DIST += $(GENERATORS) 255 256unicode-tables: arabic-table indic-table tag-table use-table emoji-table 257 258arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt 259 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-arabic-table.hh \ 260 || ($(RM) $(srcdir)/hb-ot-shape-complex-arabic-table.hh; false) 261 262indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt 263 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-indic-table.cc \ 264 || ($(RM) $(srcdir)/hb-ot-shape-complex-indic-table.cc; false) 265 266tag-table: gen-tag-table.py languagetags language-subtag-registry 267 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-tag-table.hh \ 268 || ($(RM) $(srcdir)/hb-ot-tag-table.hh; false) 269 270use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt 271 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-use-table.cc \ 272 || ($(RM) $(srcdir)/hb-ot-shape-complex-use-table.cc; false) 273 274vowel-constraints: gen-vowel-constraints.py HBIndicVowelConstraints.txt Scripts.txt 275 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-vowel-constraints.cc \ 276 || ($(RM) $(srcdir)/hb-ot-shape-complex-vowel-constraints.cc; false) 277 278emoji-table: gen-emoji-table.py emoji-data.txt 279 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-unicode-emoji-table.hh \ 280 || ($(RM) $(srcdir)/hb-unicode-emoji-table.hh; false) 281 282built-sources: $(BUILT_SOURCES) 283 284.PHONY: unicode-tables arabic-table indic-table tag-table use-table vowel-constraints emoji-table built-sources 285 286RAGEL_GENERATED = \ 287 $(patsubst %,$(srcdir)/%,$(HB_BASE_RAGEL_GENERATED_sources)) \ 288 $(NULL) 289BUILT_SOURCES += $(RAGEL_GENERATED) 290EXTRA_DIST += \ 291 $(HB_BASE_RAGEL_sources) \ 292 $(NULL) 293# We decided to add ragel-generated files to git... 294#MAINTAINERCLEANFILES += $(RAGEL_GENERATED) 295$(srcdir)/%.hh: $(srcdir)/%.rl 296 $(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \ 297 || ($(RM) "$@"; false) 298 299noinst_PROGRAMS = \ 300 main \ 301 test \ 302 test-buffer-serialize \ 303 test-ot-name \ 304 test-gpos-size-params \ 305 test-gsub-would-substitute \ 306 $(NULL) 307bin_PROGRAMS = 308 309main_SOURCES = main.cc 310main_CPPFLAGS = $(HBCFLAGS) 311main_LDADD = libharfbuzz.la $(HBLIBS) 312 313test_SOURCES = test.cc 314test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS) 315test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS) 316 317test_buffer_serialize_SOURCES = test-buffer-serialize.cc 318test_buffer_serialize_CPPFLAGS = $(HBCFLAGS) 319test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS) 320 321test_ot_name_SOURCES = test-ot-name.cc 322test_ot_name_CPPFLAGS = $(HBCFLAGS) 323test_ot_name_LDADD = libharfbuzz.la $(HBLIBS) 324 325test_gpos_size_params_SOURCES = test-gpos-size-params.cc 326test_gpos_size_params_CPPFLAGS = $(HBCFLAGS) 327test_gpos_size_params_LDADD = libharfbuzz.la $(HBLIBS) 328 329test_gsub_would_substitute_SOURCES = test-gsub-would-substitute.cc 330test_gsub_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS) 331test_gsub_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS) 332 333if HAVE_FREETYPE 334if HAVE_CAIRO_FT 335noinst_PROGRAMS += test-ot-color 336test_ot_color_SOURCES = test-ot-color.cc 337test_ot_color_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS) $(CAIRO_FT_CFLAGS) 338test_ot_color_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS) $(CAIRO_LIBS) $(CAIRO_FT_LIBS) 339endif # HAVE_CAIRO_FT 340endif # HAVE_FREETYPE 341 342dist_check_SCRIPTS = \ 343 check-c-linkage-decls.sh \ 344 check-externs.sh \ 345 check-header-guards.sh \ 346 check-includes.sh \ 347 check-static-inits.sh \ 348 check-symbols.sh \ 349 $(NULL) 350TESTS += $(dist_check_SCRIPTS) 351 352if !WITH_LIBSTDCXX 353dist_check_SCRIPTS += \ 354 check-libstdc++.sh \ 355 $(NULL) 356endif 357 358check_PROGRAMS += \ 359 dump-indic-data \ 360 dump-khmer-data \ 361 dump-myanmar-data \ 362 dump-use-data \ 363 $(NULL) 364dump_indic_data_SOURCES = dump-indic-data.cc hb-ot-shape-complex-indic-table.cc 365dump_indic_data_CPPFLAGS = $(HBCFLAGS) 366dump_indic_data_LDADD = libharfbuzz.la $(HBLIBS) 367dump_khmer_data_SOURCES = dump-khmer-data.cc hb-ot-shape-complex-indic-table.cc 368dump_khmer_data_CPPFLAGS = $(HBCFLAGS) 369dump_khmer_data_LDADD = libharfbuzz.la $(HBLIBS) 370dump_myanmar_data_SOURCES = dump-myanmar-data.cc hb-ot-shape-complex-indic-table.cc 371dump_myanmar_data_CPPFLAGS = $(HBCFLAGS) 372dump_myanmar_data_LDADD = libharfbuzz.la $(HBLIBS) 373dump_use_data_SOURCES = dump-use-data.cc hb-ot-shape-complex-use-table.cc 374dump_use_data_CPPFLAGS = $(HBCFLAGS) 375dump_use_data_LDADD = libharfbuzz.la $(HBLIBS) 376 377COMPILED_TESTS = test-algs test-iter test-meta test-ot-tag test-unicode-ranges 378COMPILED_TESTS_CPPFLAGS = $(HBCFLAGS) -DMAIN -UNDEBUG 379COMPILED_TESTS_LDADD = libharfbuzz.la $(HBLIBS) 380check_PROGRAMS += $(COMPILED_TESTS) 381TESTS += $(COMPILED_TESTS) 382 383test_algs_SOURCES = test-algs.cc hb-static.cc 384test_algs_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) 385test_algs_LDADD = $(COMPILED_TESTS_LDADD) 386 387test_iter_SOURCES = test-iter.cc hb-static.cc 388test_iter_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) 389test_iter_LDADD = $(COMPILED_TESTS_LDADD) 390 391test_meta_SOURCES = test-meta.cc hb-static.cc 392test_meta_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) 393test_meta_LDADD = $(COMPILED_TESTS_LDADD) 394 395test_ot_tag_SOURCES = hb-ot-tag.cc 396test_ot_tag_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) 397test_ot_tag_LDADD = $(COMPILED_TESTS_LDADD) 398 399test_unicode_ranges_SOURCES = test-unicode-ranges.cc 400test_unicode_ranges_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) 401test_unicode_ranges_LDADD = $(COMPILED_TESTS_LDADD) 402 403TESTS_ENVIRONMENT = \ 404 srcdir="$(srcdir)" \ 405 MAKE="$(MAKE) $(AM_MAKEFLAGS)" \ 406 HBSOURCES="$(HBSOURCES)" \ 407 HBHEADERS="$(HBHEADERS)" \ 408 $(NULL) 409 410if HAVE_INTROSPECTION 411 412-include $(INTROSPECTION_MAKEFILE) 413INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?! 414INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all 415INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) 416INTROSPECTION_SCANNER_ENV = CC="$(CC)" 417 418HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la 419HarfBuzz_0_0_gir_INCLUDES = GObject-2.0 420HarfBuzz_0_0_gir_CFLAGS = \ 421 $(INCLUDES) \ 422 $(HBCFLAGS) \ 423 -DHB_H \ 424 -DHB_H_IN \ 425 -DHB_OT_H \ 426 -DHB_OT_H_IN \ 427 -DHB_AAT_H \ 428 -DHB_AAT_H_IN \ 429 -DHB_GOBJECT_H \ 430 -DHB_GOBJECT_H_IN \ 431 -DHB_EXTERN= \ 432 $(NULL) 433HarfBuzz_0_0_gir_LIBS = \ 434 libharfbuzz.la \ 435 libharfbuzz-gobject.la \ 436 $(NULL) 437HarfBuzz_0_0_gir_FILES = \ 438 $(HBHEADERS) \ 439 $(HBSOURCES) \ 440 $(HB_GOBJECT_sources) \ 441 $(HB_GOBJECT_headers) \ 442 $(NULL) 443 444girdir = $(datadir)/gir-1.0 445gir_DATA = $(INTROSPECTION_GIRS) 446 447typelibdir = $(libdir)/girepository-1.0 448typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) 449 450CLEANFILES += $(gir_DATA) $(typelib_DATA) 451 452endif 453 454-include $(top_srcdir)/git.mk 455