1 # Process this file with automake to produce Makefile.in
10 MAINTAINERCLEANFILES =
11 DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
15 EXTRA_DIST += harfbuzz.cc
17 # Convenience targets:
18 lib: $(BUILT_SOURCES) libharfbuzz.la
19 libs: $(BUILT_SOURCES) $(lib_LTLIBRARIES)
21 $(MAKE) $(AM_MAKEFLAGS) CPPFLAGS="-Os -DHB_TINY $(CPPFLAGS)" libs
23 $(MAKE) $(AM_MAKEFLAGS) CPPFLAGS="-Oz -DHB_TINY $(CPPFLAGS)" libs
25 lib_LTLIBRARIES = libharfbuzz.la
27 include Makefile.sources
33 HBSOURCES = $(HB_BASE_sources)
34 HBSOURCES += $(HB_BASE_RAGEL_GENERATED_sources)
35 HBHEADERS = $(HB_BASE_headers)
38 HBCFLAGS += $(PTHREAD_CFLAGS)
39 HBNONPCLIBS += $(PTHREAD_LIBS)
43 HBCFLAGS += $(GLIB_CFLAGS)
44 HBLIBS += $(GLIB_LIBS)
45 HBDEPS += $(GLIB_DEPS)
46 HBSOURCES += $(HB_GLIB_sources)
47 HBHEADERS += $(HB_GLIB_headers)
51 HBCFLAGS += $(FREETYPE_CFLAGS)
52 HBLIBS += $(FREETYPE_LIBS)
54 # The following creates a recursive dependency on FreeType if FreeType is
55 # built with HarfBuzz support enabled. Newer pkg-config handles that just
56 # fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove
57 # in a year or two, or otherwise work around it...
58 #HBDEPS += $(FREETYPE_DEPS)
59 HBSOURCES += $(HB_FT_sources)
60 HBHEADERS += $(HB_FT_headers)
64 HBCFLAGS += $(GRAPHITE2_CFLAGS)
65 HBLIBS += $(GRAPHITE2_LIBS)
66 HBDEPS += $(GRAPHITE2_DEPS)
67 HBSOURCES += $(HB_GRAPHITE2_sources)
68 HBHEADERS += $(HB_GRAPHITE2_headers)
72 HBCFLAGS += $(UNISCRIBE_CFLAGS)
73 HBNONPCLIBS += $(UNISCRIBE_LIBS)
74 HBSOURCES += $(HB_UNISCRIBE_sources)
75 HBHEADERS += $(HB_UNISCRIBE_headers)
79 HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
80 HBNONPCLIBS += $(DIRECTWRITE_LIBS)
81 HBSOURCES += $(HB_DIRECTWRITE_sources)
82 HBHEADERS += $(HB_DIRECTWRITE_headers)
86 HBCFLAGS += $(GDI_CXXFLAGS)
87 HBNONPCLIBS += $(GDI_LIBS)
88 HBSOURCES += $(HB_GDI_sources)
89 HBHEADERS += $(HB_GDI_headers)
93 HBCFLAGS += $(CORETEXT_CFLAGS)
94 HBNONPCLIBS += $(CORETEXT_LIBS)
95 HBSOURCES += $(HB_CORETEXT_sources)
96 HBHEADERS += $(HB_CORETEXT_headers)
103 $(srcdir)/hb-version.h: hb-version.h.in $(top_srcdir)/configure.ac
105 -e 's/[@]HB_VERSION_MAJOR@/$(HB_VERSION_MAJOR)/' \
106 -e 's/[@]HB_VERSION_MINOR@/$(HB_VERSION_MINOR)/' \
107 -e 's/[@]HB_VERSION_MICRO@/$(HB_VERSION_MICRO)/' \
108 -e 's/[@]HB_VERSION@/$(HB_VERSION)/' \
109 "$<" > "$@" || ($(RM) "$@"; false)
111 # Put the library together
113 HBLIBS += $(HBNONPCLIBS)
116 export_symbols = -export-symbols harfbuzz.def
117 harfbuzz_def_dependency = harfbuzz.def
118 export_symbols_subset = -export-symbols harfbuzz-subset.def
119 harfbuzz_subset_def_dependency = harfbuzz-subset.def
120 export_symbols_icu = -export-symbols harfbuzz-icu.def
121 harfbuzz_icu_def_dependency = harfbuzz-icu.def
122 export_symbols_gobject = -export-symbols harfbuzz-gobject.def
123 harfbuzz_gobject_def_dependency = harfbuzz-gobject.def
124 chosen_linker = $(CXXLINK)
127 chosen_linker = $(CXXLINK)
130 # Use a C linker for GCC, not C++; Don't link to libstdc++
131 chosen_linker = $(LINK)
133 chosen_linker = $(CXXLINK)
138 @CODE_COVERAGE_RULES@
140 base_link_flags = $(AM_LDFLAGS) -lm -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
141 libharfbuzz_la_LINK = $(chosen_linker) $(libharfbuzz_la_LDFLAGS)
142 libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS)
143 libharfbuzz_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS)
144 libharfbuzz_la_LDFLAGS = $(base_link_flags) $(export_symbols) $(CODE_COVERAGE_LDFLAGS)
145 libharfbuzz_la_LIBADD = $(HBLIBS)
146 EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
147 pkginclude_HEADERS = $(HBHEADERS)
148 nodist_pkginclude_HEADERS =
149 pkgconfigdir = $(libdir)/pkgconfig
150 pkgconfig_DATA = harfbuzz.pc
151 cmakedir = $(libdir)/cmake/harfbuzz
152 cmake_DATA = harfbuzz-config.cmake
153 EXTRA_DIST += hb-version.h.in harfbuzz.pc.in harfbuzz-config.cmake.in
155 lib_LTLIBRARIES += libharfbuzz-subset.la
156 libharfbuzz_subset_la_SOURCES = $(HB_SUBSET_sources)
157 libharfbuzz_subset_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS)
158 libharfbuzz_subset_la_LDFLAGS = $(base_link_flags) $(export_symbols_subset) $(CODE_COVERAGE_LDFLAGS)
159 libharfbuzz_subset_la_LIBADD = libharfbuzz.la
160 EXTRA_libharfbuzz_subset_la_DEPENDENCIES = $(harfbuzz_subset_def_dependency)
161 pkginclude_HEADERS += $(HB_SUBSET_headers)
162 pkgconfig_DATA += harfbuzz-subset.pc
163 EXTRA_DIST += harfbuzz-subset.pc.in
167 HBCFLAGS += $(ICU_CFLAGS)
168 HBLIBS += $(ICU_LIBS)
169 HBSOURCES += $(HB_ICU_sources)
170 HBHEADERS += $(HB_ICU_headers)
172 lib_LTLIBRARIES += libharfbuzz-icu.la
173 libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
174 libharfbuzz_icu_la_CPPFLAGS = $(HBCFLAGS) $(ICU_CFLAGS) $(CODE_COVERAGE_CFLAGS)
175 libharfbuzz_icu_la_LDFLAGS = $(base_link_flags) $(export_symbols_icu) $(CODE_COVERAGE_LDFLAGS)
176 libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
177 EXTRA_libharfbuzz_icu_la_DEPENDENCIES = $(harfbuzz_icu_def_dependency)
178 pkginclude_HEADERS += $(HB_ICU_headers)
179 pkgconfig_DATA += harfbuzz-icu.pc
182 EXTRA_DIST += harfbuzz-icu.pc.in
185 lib_LTLIBRARIES += libharfbuzz-gobject.la
186 libharfbuzz_gobject_la_LINK = $(chosen_linker) $(libharfbuzz_gobject_la_LDFLAGS)
187 libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_DIST_sources)
188 nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_NODIST_sources)
189 libharfbuzz_gobject_la_CPPFLAGS = $(HBCFLAGS) $(GOBJECT_CFLAGS) $(CODE_COVERAGE_CFLAGS)
190 libharfbuzz_gobject_la_LDFLAGS = $(base_link_flags) $(CODE_COVERAGE_LDFLAGS)
191 libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
192 EXTRA_libharfbuzz_gobject_la_DEPENDENCIES = $(harfbuzz_gobject_def_dependency)
193 pkginclude_HEADERS += $(HB_GOBJECT_DIST_headers)
194 nodist_pkginclude_HEADERS += $(HB_GOBJECT_NODIST_headers)
195 pkgconfig_DATA += harfbuzz-gobject.pc
198 $(HB_GOBJECT_ENUM_sources) \
199 $(HB_GOBJECT_ENUM_headers) \
202 $(HB_GOBJECT_ENUM_sources) \
203 $(HB_GOBJECT_ENUM_headers) \
205 hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
206 $(AM_V_GEN) PYTHONIOENCODING=UTF-8 $(GLIB_MKENUMS) \
207 --identifier-prefix hb_ --symbol-prefix hb_gobject \
209 sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \
210 || ($(RM) "$@"; false)
213 harfbuzz-gobject.pc.in \
214 hb-gobject-enums.cc.tmpl \
215 hb-gobject-enums.h.tmpl \
219 %.pc: %.pc.in $(top_builddir)/config.status
221 $(SED) -e 's@%prefix%@$(prefix)@g' \
222 -e 's@%exec_prefix%@$(exec_prefix)@g' \
223 -e 's@%libdir%@$(libdir)@g' \
224 -e 's@%includedir%@$(includedir)@g' \
225 -e 's@%libs_private%@$(HBNONPCLIBS)@g' \
226 -e 's@%requires_private%@$(HBDEPS)@g' \
227 -e 's@%VERSION%@$(VERSION)@g' \
229 || ($(RM) "$@"; false)
231 CLEANFILES += $(pkgconfig_DATA)
234 DEF_FILES = harfbuzz.def harfbuzz-subset.def harfbuzz-icu.def harfbuzz-deprecated-symbols.txt
236 DEF_FILES += harfbuzz-gobject.def
238 check: $(DEF_FILES) # For check-symbols.sh
239 CLEANFILES += $(DEF_FILES)
240 harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
241 $(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
242 harfbuzz-subset.def: $(HB_SUBSET_headers)
243 $(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
244 harfbuzz-icu.def: $(HB_ICU_headers)
245 $(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
246 harfbuzz-gobject.def: $(HB_GOBJECT_headers)
247 $(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
248 harfbuzz-deprecated-symbols.txt: $(srcdir)/hb-deprecated.h
249 $(AM_V_GEN) PLAIN_LIST=1 $(srcdir)/gen-def.py "$@" $^
253 gen-arabic-table.py \
257 gen-os2-unicode-ranges.py \
261 gen-vowel-constraints.py \
263 EXTRA_DIST += $(GENERATORS)
275 arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
276 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-arabic-table.hh \
277 || ($(RM) $(srcdir)/hb-ot-shape-complex-arabic-table.hh; false)
278 emoji-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 indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt
282 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-indic-table.cc \
283 || ($(RM) $(srcdir)/hb-ot-shape-complex-indic-table.cc; false)
284 tag-table: gen-tag-table.py languagetags language-subtag-registry
285 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-tag-table.hh \
286 || ($(RM) $(srcdir)/hb-ot-tag-table.hh; false)
287 ucd-table: gen-ucd-table.py ucd.nounihan.grouped.zip hb-common.h
288 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ucd-table.hh \
289 || ($(RM) $(srcdir)/hb-ucd-table.hh; false)
290 use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
291 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-use-table.cc \
292 || ($(RM) $(srcdir)/hb-ot-shape-complex-use-table.cc; false)
293 vowel-constraints: gen-vowel-constraints.py HBIndicVowelConstraints.txt Scripts.txt
294 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-vowel-constraints.cc \
295 || ($(RM) $(srcdir)/hb-ot-shape-complex-vowel-constraints.cc; false)
298 built-sources: $(BUILT_SOURCES)
300 .PHONY: unicode-tables arabic-table indic-table tag-table use-table vowel-constraints emoji-table built-sources
303 $(patsubst %,$(srcdir)/%,$(HB_BASE_RAGEL_GENERATED_sources)) \
305 BUILT_SOURCES += $(RAGEL_GENERATED)
307 $(HB_BASE_RAGEL_sources) \
309 # We decided to add ragel-generated files to git...
310 #MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
311 $(srcdir)/%.hh: $(srcdir)/%.rl
312 $(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
313 || ($(RM) "$@"; false)
315 harfbuzz.cc: Makefile.sources
321 $(HB_GRAPHITE2_sources) \
322 $(HB_UNISCRIBE_sources) \
324 $(HB_DIRECTWRITE_sources) \
325 $(HB_CORETEXT_sources) \
326 ; do echo '#include "'$$f'"'; done | \
327 grep '[.]cc"' > $(srcdir)/harfbuzz.cc \
328 || ($(RM) $(srcdir)/harfbuzz.cc; false)
329 BUILT_SOURCES += harfbuzz.cc
334 test-buffer-serialize \
337 test-gpos-size-params \
338 test-gsub-would-substitute \
342 main_SOURCES = main.cc
343 main_CPPFLAGS = $(HBCFLAGS)
344 main_LDADD = libharfbuzz.la $(HBLIBS)
346 test_SOURCES = test.cc
347 test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
348 test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
350 test_buffer_serialize_SOURCES = test-buffer-serialize.cc
351 test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
352 test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
354 test_ot_meta_SOURCES = test-ot-meta.cc
355 test_ot_meta_CPPFLAGS = $(HBCFLAGS)
356 test_ot_meta_LDADD = libharfbuzz.la $(HBLIBS)
358 test_ot_name_SOURCES = test-ot-name.cc
359 test_ot_name_CPPFLAGS = $(HBCFLAGS)
360 test_ot_name_LDADD = libharfbuzz.la $(HBLIBS)
362 test_gpos_size_params_SOURCES = test-gpos-size-params.cc
363 test_gpos_size_params_CPPFLAGS = $(HBCFLAGS)
364 test_gpos_size_params_LDADD = libharfbuzz.la $(HBLIBS)
366 test_gsub_would_substitute_SOURCES = test-gsub-would-substitute.cc
367 test_gsub_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
368 test_gsub_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
372 noinst_PROGRAMS += test-ot-color
373 test_ot_color_SOURCES = test-ot-color.cc
374 test_ot_color_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS) $(CAIRO_FT_CFLAGS)
375 test_ot_color_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS) $(CAIRO_LIBS) $(CAIRO_FT_LIBS)
376 endif # HAVE_CAIRO_FT
377 endif # HAVE_FREETYPE
379 dist_check_SCRIPTS = \
380 check-c-linkage-decls.sh \
382 check-header-guards.sh \
384 check-static-inits.sh \
387 TESTS += $(dist_check_SCRIPTS)
390 dist_check_SCRIPTS += \
401 dump_indic_data_SOURCES = dump-indic-data.cc hb-ot-shape-complex-indic-table.cc
402 dump_indic_data_CPPFLAGS = $(HBCFLAGS)
403 dump_indic_data_LDADD = libharfbuzz.la $(HBLIBS)
404 dump_khmer_data_SOURCES = dump-khmer-data.cc hb-ot-shape-complex-indic-table.cc
405 dump_khmer_data_CPPFLAGS = $(HBCFLAGS)
406 dump_khmer_data_LDADD = libharfbuzz.la $(HBLIBS)
407 dump_myanmar_data_SOURCES = dump-myanmar-data.cc hb-ot-shape-complex-indic-table.cc
408 dump_myanmar_data_CPPFLAGS = $(HBCFLAGS)
409 dump_myanmar_data_LDADD = libharfbuzz.la $(HBLIBS)
410 dump_use_data_SOURCES = dump-use-data.cc hb-ot-shape-complex-use-table.cc
411 dump_use_data_CPPFLAGS = $(HBCFLAGS)
412 dump_use_data_LDADD = libharfbuzz.la $(HBLIBS)
414 COMPILED_TESTS = test-algs test-iter test-meta test-number test-ot-tag test-unicode-ranges test-bimap
415 COMPILED_TESTS_CPPFLAGS = $(HBCFLAGS) -DMAIN -UNDEBUG
416 COMPILED_TESTS_LDADD = libharfbuzz.la $(HBLIBS)
417 check_PROGRAMS += $(COMPILED_TESTS)
418 TESTS += $(COMPILED_TESTS)
420 test_algs_SOURCES = test-algs.cc hb-static.cc
421 test_algs_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
422 test_algs_LDADD = $(COMPILED_TESTS_LDADD)
424 test_iter_SOURCES = test-iter.cc hb-static.cc
425 test_iter_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
426 test_iter_LDADD = $(COMPILED_TESTS_LDADD)
428 test_meta_SOURCES = test-meta.cc hb-static.cc
429 test_meta_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
430 test_meta_LDADD = $(COMPILED_TESTS_LDADD)
432 test_number_SOURCES = test-number.cc hb-number.cc
433 test_number_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
434 test_number_LDADD = $(COMPILED_TESTS_LDADD)
436 test_ot_tag_SOURCES = hb-ot-tag.cc
437 test_ot_tag_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
438 test_ot_tag_LDADD = $(COMPILED_TESTS_LDADD)
440 test_unicode_ranges_SOURCES = test-unicode-ranges.cc
441 test_unicode_ranges_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
442 test_unicode_ranges_LDADD = $(COMPILED_TESTS_LDADD)
444 test_bimap_SOURCES = test-bimap.cc hb-static.cc
445 test_bimap_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
446 test_bimap_LDADD = $(COMPILED_TESTS_LDADD)
448 TESTS_ENVIRONMENT = \
450 MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
451 HBSOURCES="$(HBSOURCES)" \
452 HBHEADERS="$(HBHEADERS)" \
455 if HAVE_INTROSPECTION
457 -include $(INTROSPECTION_MAKEFILE)
458 INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
459 INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
460 INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
461 INTROSPECTION_SCANNER_ENV = CC="$(CC)"
463 HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la
464 HarfBuzz_0_0_gir_INCLUDES = GObject-2.0
465 HarfBuzz_0_0_gir_CFLAGS = \
479 HarfBuzz_0_0_gir_LIBS = \
481 libharfbuzz-gobject.la \
483 HarfBuzz_0_0_gir_FILES = \
486 $(HB_GOBJECT_sources) \
487 $(HB_GOBJECT_headers) \
490 girdir = $(datadir)/gir-1.0
491 gir_DATA = $(INTROSPECTION_GIRS)
493 typelibdir = $(libdir)/girepository-1.0
494 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
496 CLEANFILES += $(gir_DATA) $(typelib_DATA)
500 -include $(top_srcdir)/git.mk