1 # Process this file with automake to produce Makefile.in
10 MAINTAINERCLEANFILES =
11 DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
15 # Convenience targets:
16 lib: $(BUILT_SOURCES) libharfbuzz.la libharfbuzz-subset.la
17 fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la libharfbuzz-subset-fuzzing.la
19 lib_LTLIBRARIES = libharfbuzz.la
21 include Makefile.sources
27 HBSOURCES = $(HB_BASE_sources)
28 HBSOURCES += $(HB_BASE_RAGEL_GENERATED_sources)
29 HBHEADERS = $(HB_BASE_headers)
32 HBSOURCES += $(HB_OT_sources)
33 HBSOURCES += $(HB_OT_RAGEL_GENERATED_sources)
34 HBHEADERS += $(HB_OT_headers)
38 HBSOURCES += $(HB_FALLBACK_sources)
42 HBCFLAGS += $(PTHREAD_CFLAGS)
43 HBNONPCLIBS += $(PTHREAD_LIBS)
47 HBCFLAGS += $(GLIB_CFLAGS)
48 HBLIBS += $(GLIB_LIBS)
49 HBDEPS += $(GLIB_DEPS)
50 HBSOURCES += $(HB_GLIB_sources)
51 HBHEADERS += $(HB_GLIB_headers)
55 HBCFLAGS += $(FREETYPE_CFLAGS)
56 HBLIBS += $(FREETYPE_LIBS)
58 # The following creates a recursive dependency on FreeType if FreeType is
59 # built with HarfBuzz support enabled. Newer pkg-config handles that just
60 # fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove
61 # in a year or two, or otherwise work around it...
62 #HBDEPS += $(FREETYPE_DEPS)
63 HBSOURCES += $(HB_FT_sources)
64 HBHEADERS += $(HB_FT_headers)
68 HBCFLAGS += $(GRAPHITE2_CFLAGS)
69 HBLIBS += $(GRAPHITE2_LIBS)
70 HBDEPS += $(GRAPHITE2_DEPS)
71 HBSOURCES += $(HB_GRAPHITE2_sources)
72 HBHEADERS += $(HB_GRAPHITE2_headers)
76 HBCFLAGS += $(UNISCRIBE_CFLAGS)
77 HBNONPCLIBS += $(UNISCRIBE_LIBS)
78 HBSOURCES += $(HB_UNISCRIBE_sources)
79 HBHEADERS += $(HB_UNISCRIBE_headers)
83 HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
84 HBNONPCLIBS += $(DIRECTWRITE_LIBS)
85 HBSOURCES += $(HB_DIRECTWRITE_sources)
86 HBHEADERS += $(HB_DIRECTWRITE_headers)
90 HBCFLAGS += $(CORETEXT_CFLAGS)
91 HBNONPCLIBS += $(CORETEXT_LIBS)
92 HBSOURCES += $(HB_CORETEXT_sources)
93 HBHEADERS += $(HB_CORETEXT_headers)
98 HBCFLAGS += -I$(srcdir)/hb-ucdn
99 HBLIBS += hb-ucdn/libhb-ucdn.la
100 HBSOURCES += $(HB_UCDN_sources)
101 hb-ucdn/libhb-ucdn.la: ucdn
103 @$(MAKE) $(AM_MAKEFLAGS) -C hb-ucdn
105 DIST_SUBDIRS += hb-ucdn
111 $(srcdir)/hb-version.h: hb-version.h.in $(top_srcdir)/configure.ac
113 -e 's/[@]HB_VERSION_MAJOR@/$(HB_VERSION_MAJOR)/' \
114 -e 's/[@]HB_VERSION_MINOR@/$(HB_VERSION_MINOR)/' \
115 -e 's/[@]HB_VERSION_MICRO@/$(HB_VERSION_MICRO)/' \
116 -e 's/[@]HB_VERSION@/$(HB_VERSION)/' \
117 "$<" > "$@" || ($(RM) "$@"; false)
119 # Put the library together
121 HBLIBS += $(HBNONPCLIBS)
124 export_symbols = -export-symbols harfbuzz.def
125 harfbuzz_def_dependency = harfbuzz.def
126 export_symbols_subset = -export-symbols harfbuzz-subset.def
127 harfbuzz_subset_def_dependency = harfbuzz-subset.def
128 export_symbols_icu = -export-symbols harfbuzz-icu.def
129 harfbuzz_icu_def_dependency = harfbuzz-icu.def
130 export_symbols_gobject = -export-symbols harfbuzz-gobject.def
131 harfbuzz_gobject_def_dependency = harfbuzz-gobject.def
132 chosen_linker = $(CXXLINK)
135 chosen_linker = $(CXXLINK)
138 # Use a C linker for GCC, not C++; Don't link to libstdc++
139 chosen_linker = $(LINK)
141 chosen_linker = $(CXXLINK)
146 @CODE_COVERAGE_RULES@
148 base_link_flags = $(AM_LDFLAGS) -lm -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
149 libharfbuzz_la_LINK = $(chosen_linker) $(libharfbuzz_la_LDFLAGS)
150 libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS)
151 libharfbuzz_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS)
152 libharfbuzz_la_LDFLAGS = $(base_link_flags) $(export_symbols) $(CODE_COVERAGE_LDFLAGS)
153 libharfbuzz_la_LIBADD = $(HBLIBS)
154 EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
155 pkginclude_HEADERS = $(HBHEADERS)
156 nodist_pkginclude_HEADERS =
157 pkgconfigdir = $(libdir)/pkgconfig
158 pkgconfig_DATA = harfbuzz.pc
159 cmakedir = $(libdir)/cmake/harfbuzz
160 cmake_DATA = harfbuzz-config.cmake
161 EXTRA_DIST += hb-version.h.in harfbuzz.pc.in harfbuzz-config.cmake.in
163 lib_LTLIBRARIES += libharfbuzz-subset.la
164 libharfbuzz_subset_la_SOURCES = $(HB_SUBSET_sources)
165 libharfbuzz_subset_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS)
166 libharfbuzz_subset_la_LDFLAGS = $(base_link_flags) $(export_symbols_subset) $(CODE_COVERAGE_LDFLAGS)
167 libharfbuzz_subset_la_LIBADD = libharfbuzz.la
168 EXTRA_libharfbuzz_subset_la_DEPENDENCIES = $(harfbuzz_subset_def_dependency)
169 pkginclude_HEADERS += $(HB_SUBSET_headers)
170 pkgconfig_DATA += harfbuzz-subset.pc
171 EXTRA_DIST += harfbuzz-subset.pc.in
175 -DHB_MAX_NESTING_LEVEL=3 \
176 -DHB_SANITIZE_MAX_EDITS=3 \
177 -DHB_SANITIZE_MAX_OPS_FACTOR=3 \
178 -DHB_SANITIZE_MAX_OPS_MIN=128 \
179 -DHB_BUFFER_MAX_LEN_FACTOR=3 \
180 -DHB_BUFFER_MAX_LEN_MIN=8 \
181 -DHB_BUFFER_MAX_LEN_DEFAULT=128 \
182 -DHB_BUFFER_MAX_OPS_FACTOR=8 \
183 -DHB_BUFFER_MAX_OPS_MIN=64 \
184 -DHB_BUFFER_MAX_OPS_DEFAULT=1024 \
186 EXTRA_LTLIBRARIES = libharfbuzz-fuzzing.la libharfbuzz-subset-fuzzing.la
188 libharfbuzz_fuzzing_la_LINK = $(chosen_linker) $(libharfbuzz_fuzzing_la_LDFLAGS)
189 libharfbuzz_fuzzing_la_SOURCES = $(libharfbuzz_la_SOURCES)
190 libharfbuzz_fuzzing_la_CPPFLAGS = $(HBCFLAGS) $(FUZZING_CPPFLAGS)
191 libharfbuzz_fuzzing_la_LDFLAGS = $(AM_LDFLAGS)
192 libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD)
193 EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES = $(EXTRA_libharfbuzz_la_DEPENDENCIES)
194 CLEANFILES += libharfbuzz-fuzzing.la
196 libharfbuzz_subset_fuzzing_la_LINK = $(chosen_linker) $(libharfbuzz_subset_fuzzing_la_LDFLAGS)
197 libharfbuzz_subset_fuzzing_la_SOURCES = $(libharfbuzz_subset_la_SOURCES)
198 libharfbuzz_subset_fuzzing_la_CPPFLAGS = $(HBCFLAGS) $(FUZZING_CPPFLAGS)
199 libharfbuzz_subset_fuzzing_la_LDFLAGS = $(AM_LDFLAGS)
200 libharfbuzz_subset_fuzzing_la_LIBADD = $(libharfbuzz_subset_la_LIBADD)
201 EXTRA_libharfbuzz_subset_fuzzing_la_DEPENDENCIES = $(EXTRA_libharfbuzz_subset_la_DEPENDENCIES)
202 CLEANFILES += libharfbuzz-subset-fuzzing.la
206 HBCFLAGS += $(ICU_CFLAGS)
207 HBLIBS += $(ICU_LIBS)
208 HBSOURCES += $(HB_ICU_sources)
209 HBHEADERS += $(HB_ICU_headers)
211 lib_LTLIBRARIES += libharfbuzz-icu.la
212 libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
213 libharfbuzz_icu_la_CPPFLAGS = $(HBCFLAGS) $(ICU_CFLAGS) $(CODE_COVERAGE_CFLAGS)
214 libharfbuzz_icu_la_LDFLAGS = $(base_link_flags) $(export_symbols_icu) $(CODE_COVERAGE_LDFLAGS)
215 libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
216 EXTRA_libharfbuzz_icu_la_DEPENDENCIES = $(harfbuzz_icu_def_dependency)
217 pkginclude_HEADERS += $(HB_ICU_headers)
218 pkgconfig_DATA += harfbuzz-icu.pc
221 EXTRA_DIST += harfbuzz-icu.pc.in
224 lib_LTLIBRARIES += libharfbuzz-gobject.la
225 libharfbuzz_gobject_la_LINK = $(chosen_linker) $(libharfbuzz_gobject_la_LDFLAGS)
226 libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_DIST_sources)
227 nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_NODIST_sources)
228 libharfbuzz_gobject_la_CPPFLAGS = $(HBCFLAGS) $(GOBJECT_CFLAGS) $(CODE_COVERAGE_CFLAGS)
229 libharfbuzz_gobject_la_LDFLAGS = $(base_link_flags) $(CODE_COVERAGE_LDFLAGS)
230 libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
231 EXTRA_libharfbuzz_gobject_la_DEPENDENCIES = $(harfbuzz_gobject_def_dependency)
232 pkginclude_HEADERS += $(HB_GOBJECT_DIST_headers)
233 nodist_pkginclude_HEADERS += $(HB_GOBJECT_NODIST_headers)
234 pkgconfig_DATA += harfbuzz-gobject.pc
237 $(HB_GOBJECT_ENUM_sources) \
238 $(HB_GOBJECT_ENUM_headers) \
241 $(HB_GOBJECT_ENUM_sources) \
242 $(HB_GOBJECT_ENUM_headers) \
244 hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
245 $(AM_V_GEN) PYTHONIOENCODING=UTF-8 $(GLIB_MKENUMS) \
246 --identifier-prefix hb_ --symbol-prefix hb_gobject \
248 sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \
249 || ($(RM) "$@"; false)
252 harfbuzz-gobject.pc.in \
253 hb-gobject-enums.cc.tmpl \
254 hb-gobject-enums.h.tmpl \
258 %.pc: %.pc.in $(top_builddir)/config.status
260 $(SED) -e 's@%prefix%@$(prefix)@g' \
261 -e 's@%exec_prefix%@$(exec_prefix)@g' \
262 -e 's@%libdir%@$(libdir)@g' \
263 -e 's@%includedir%@$(includedir)@g' \
264 -e 's@%libs_private%@$(HBNONPCLIBS)@g' \
265 -e 's@%requires_private%@$(HBDEPS)@g' \
266 -e 's@%VERSION%@$(VERSION)@g' \
268 || ($(RM) "$@"; false)
270 CLEANFILES += $(pkgconfig_DATA)
273 DEF_FILES = harfbuzz.def harfbuzz-subset.def harfbuzz-icu.def
275 DEF_FILES += harfbuzz-gobject.def
277 check: $(DEF_FILES) # For check-symbols.sh
278 CLEANFILES += $(DEF_FILES)
279 harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
280 $(AM_V_GEN) headers="$^" $(srcdir)/gen-def.py "$@"
281 harfbuzz-subset.def: $(HB_SUBSET_headers)
282 $(AM_V_GEN) headers="$^" $(srcdir)/gen-def.py "$@"
283 harfbuzz-icu.def: $(HB_ICU_headers)
284 $(AM_V_GEN) headers="$^" $(srcdir)/gen-def.py "$@"
285 harfbuzz-gobject.def: $(HB_GOBJECT_headers)
286 $(AM_V_GEN) headers="$^" $(srcdir)/gen-def.py "$@"
290 gen-arabic-table.py \
295 EXTRA_DIST += $(GENERATORS)
297 unicode-tables: arabic-table indic-table use-table
299 arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
300 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-arabic-table.hh \
301 || ($(RM) $(srcdir)/hb-ot-shape-complex-arabic-table.hh; false)
303 indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt
304 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-indic-table.cc \
305 || ($(RM) $(srcdir)/hb-ot-shape-complex-indic-table.cc; false)
307 use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
308 $(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-use-table.cc \
309 || ($(RM) $(srcdir)/hb-ot-shape-complex-use-table.cc; false)
311 built-sources: $(BUILT_SOURCES)
313 .PHONY: unicode-tables arabic-table indic-table use-table built-sources
316 $(patsubst %,$(srcdir)/%,$(HB_BASE_RAGEL_GENERATED_sources)) \
317 $(patsubst %,$(srcdir)/%,$(HB_OT_RAGEL_GENERATED_sources)) \
319 BUILT_SOURCES += $(RAGEL_GENERATED)
321 $(HB_BASE_RAGEL_sources) \
322 $(HB_OT_RAGEL_sources) \
324 # We decided to add ragel-generated files to git...
325 #MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
326 $(srcdir)/%.hh: $(srcdir)/%.rl
327 $(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
328 || ($(RM) "$@"; false)
333 test-buffer-serialize \
335 test-would-substitute \
339 main_SOURCES = main.cc
340 main_CPPFLAGS = $(HBCFLAGS)
341 main_LDADD = libharfbuzz.la $(HBLIBS)
343 test_SOURCES = test.cc
344 test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
345 test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
347 test_would_substitute_SOURCES = test-would-substitute.cc
348 test_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
349 test_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
351 test_size_params_SOURCES = test-size-params.cc
352 test_size_params_CPPFLAGS = $(HBCFLAGS)
353 test_size_params_LDADD = libharfbuzz.la $(HBLIBS)
355 test_buffer_serialize_SOURCES = test-buffer-serialize.cc
356 test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
357 test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
359 dist_check_SCRIPTS = \
360 check-c-linkage-decls.sh \
362 check-header-guards.sh \
364 check-static-inits.sh \
367 TESTS += $(dist_check_SCRIPTS)
370 dist_check_SCRIPTS += \
382 dump_fon_SOURCES = dump-fon.cc
383 dump_fon_CPPFLAGS = $(HBCFLAGS)
384 dump_fon_LDADD = libharfbuzz.la $(HBLIBS)
385 dump_indic_data_SOURCES = dump-indic-data.cc hb-ot-shape-complex-indic-table.cc
386 dump_indic_data_CPPFLAGS = $(HBCFLAGS)
387 dump_indic_data_LDADD = libharfbuzz.la $(HBLIBS)
388 dump_khmer_data_SOURCES = dump-khmer-data.cc hb-ot-shape-complex-indic-table.cc
389 dump_khmer_data_CPPFLAGS = $(HBCFLAGS)
390 dump_khmer_data_LDADD = libharfbuzz.la $(HBLIBS)
391 dump_myanmar_data_SOURCES = dump-myanmar-data.cc hb-ot-shape-complex-indic-table.cc
392 dump_myanmar_data_CPPFLAGS = $(HBCFLAGS)
393 dump_myanmar_data_LDADD = libharfbuzz.la $(HBLIBS)
394 dump_use_data_SOURCES = dump-use-data.cc hb-ot-shape-complex-use-table.cc
395 dump_use_data_CPPFLAGS = $(HBCFLAGS)
396 dump_use_data_LDADD = libharfbuzz.la $(HBLIBS)
400 check_PROGRAMS += dump-emoji
401 dump_emoji_SOURCES = dump-emoji.cc
402 dump_emoji_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS) $(CAIRO_FT_CFLAGS)
403 dump_emoji_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS) $(CAIRO_LIBS) $(CAIRO_FT_LIBS)
404 endif # HAVE_CAIRO_FT
405 endif # HAVE_FREETYPE
407 check_PROGRAMS += test-ot-tag test-unicode-ranges
408 TESTS += test-ot-tag test-unicode-ranges
410 test_ot_tag_SOURCES = hb-ot-tag.cc
411 test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN
412 test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS)
414 test_unicode_ranges_SOURCES = test-unicode-ranges.cc
415 test_unicode_ranges_LDADD = libharfbuzz.la $(HBLIBS)
417 TESTS_ENVIRONMENT = \
419 MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
420 HBSOURCES="$(HBSOURCES)" \
421 HBHEADERS="$(HBHEADERS)" \
424 if HAVE_INTROSPECTION
426 -include $(INTROSPECTION_MAKEFILE)
427 INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
428 INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
429 INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
430 INTROSPECTION_SCANNER_ENV = CC="$(CC)"
432 HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la
433 HarfBuzz_0_0_gir_INCLUDES = GObject-2.0
434 HarfBuzz_0_0_gir_CFLAGS = \
445 HarfBuzz_0_0_gir_LIBS = \
447 libharfbuzz-gobject.la \
449 HarfBuzz_0_0_gir_FILES = \
452 $(HB_GOBJECT_sources) \
453 $(HB_GOBJECT_headers) \
456 girdir = $(datadir)/gir-1.0
457 gir_DATA = $(INTROSPECTION_GIRS)
459 typelibdir = $(libdir)/girepository-1.0
460 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
462 CLEANFILES += $(gir_DATA) $(typelib_DATA)
466 -include $(top_srcdir)/git.mk