1 # Process this file with automake to produce Makefile.in
10 MAINTAINERCLEANFILES =
11 DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
15 # The following warning options are useful for debugging: -Wpadded
18 # Convenience targets:
19 lib: $(BUILT_SOURCES) libharfbuzz.la libharfbuzz-subset.la
20 fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la
22 lib_LTLIBRARIES = libharfbuzz.la
24 include Makefile.sources
30 HBSOURCES = $(HB_BASE_sources)
31 HBSOURCES += $(HB_BASE_RAGEL_GENERATED_sources)
32 HBHEADERS = $(HB_BASE_headers)
37 # Make sure we don't link to libstdc++
38 # No threadsafe statics in C++ as we do it ourselves
39 HBCFLAGS += -fno-exceptions
40 HBNOLIBCXXFLAGS = -fno-threadsafe-statics -fno-rtti
44 HBSOURCES += $(HB_OT_sources)
45 HBSOURCES += $(HB_OT_RAGEL_GENERATED_sources)
46 HBHEADERS += $(HB_OT_headers)
50 HBSOURCES += $(HB_FALLBACK_sources)
54 HBCFLAGS += $(PTHREAD_CFLAGS)
55 HBNONPCLIBS += $(PTHREAD_LIBS)
59 HBCFLAGS += $(GLIB_CFLAGS)
60 HBLIBS += $(GLIB_LIBS)
61 HBDEPS += $(GLIB_DEPS)
62 HBSOURCES += $(HB_GLIB_sources)
63 HBHEADERS += $(HB_GLIB_headers)
67 HBCFLAGS += $(FREETYPE_CFLAGS)
68 HBLIBS += $(FREETYPE_LIBS)
70 # The following creates a recursive dependency on FreeType if FreeType is
71 # built with HarfBuzz support enabled. Newer pkg-config handles that just
72 # fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove
73 # in a year or two, or otherwise work around it...
74 #HBDEPS += $(FREETYPE_DEPS)
75 HBSOURCES += $(HB_FT_sources)
76 HBHEADERS += $(HB_FT_headers)
80 HBCFLAGS += $(GRAPHITE2_CFLAGS)
81 HBLIBS += $(GRAPHITE2_LIBS)
82 HBDEPS += $(GRAPHITE2_DEPS)
83 HBSOURCES += $(HB_GRAPHITE2_sources)
84 HBHEADERS += $(HB_GRAPHITE2_headers)
88 HBCFLAGS += $(UNISCRIBE_CFLAGS)
89 HBNONPCLIBS += $(UNISCRIBE_LIBS)
90 HBSOURCES += $(HB_UNISCRIBE_sources)
91 HBHEADERS += $(HB_UNISCRIBE_headers)
95 HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
96 HBNONPCLIBS += $(DIRECTWRITE_LIBS)
97 HBSOURCES += $(HB_DIRECTWRITE_sources)
98 HBHEADERS += $(HB_DIRECTWRITE_headers)
102 HBCFLAGS += $(CORETEXT_CFLAGS)
103 HBNONPCLIBS += $(CORETEXT_LIBS)
104 HBSOURCES += $(HB_CORETEXT_sources)
105 HBHEADERS += $(HB_CORETEXT_headers)
110 HBCFLAGS += -I$(srcdir)/hb-ucdn
111 HBLIBS += hb-ucdn/libhb-ucdn.la
112 HBSOURCES += $(HB_UCDN_sources)
113 hb-ucdn/libhb-ucdn.la: ucdn
115 @$(MAKE) $(AM_MAKEFLAGS) -C hb-ucdn
117 DIST_SUBDIRS += hb-ucdn
120 # Put the library together
122 HBLIBS += $(HBNONPCLIBS)
125 export_symbols = -export-symbols harfbuzz.def
126 harfbuzz_def_dependency = harfbuzz.def
127 export_symbols_subset = -export-symbols harfbuzz-subset.def
128 harfbuzz_subset_def_dependency = harfbuzz-subset.def
129 export_symbols_icu = -export-symbols harfbuzz-icu.def
130 harfbuzz_icu_def_dependency = harfbuzz-icu.def
131 export_symbols_gobject = -export-symbols harfbuzz-gobject.def
132 harfbuzz_gobject_def_dependency = harfbuzz-gobject.def
133 chosen_linker = $(CXXLINK)
136 chosen_linker = $(CXXLINK)
139 # Use a C linker for GCC, not C++; Don't link to libstdc++
140 chosen_linker = $(LINK)
142 chosen_linker = $(CXXLINK)
147 @CODE_COVERAGE_RULES@
149 base_link_flags = $(AM_LDFLAGS) -lm -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
150 libharfbuzz_la_LINK = $(chosen_linker) $(libharfbuzz_la_LDFLAGS) $(CODE_COVERAGE_LDFLAGS)
151 libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS)
152 libharfbuzz_la_CPPFLAGS = $(HBCFLAGS) $(HBNOLIBCXXFLAGS) $(CODE_COVERAGE_CFLAGS)
153 libharfbuzz_la_LDFLAGS = $(base_link_flags) $(export_symbols)
154 libharfbuzz_la_LIBADD = $(HBLIBS)
155 EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
156 pkginclude_HEADERS = $(HBHEADERS)
157 nodist_pkginclude_HEADERS =
158 pkgconfigdir = $(libdir)/pkgconfig
159 pkgconfig_DATA = harfbuzz.pc
160 cmakedir = $(libdir)/cmake/harfbuzz
161 cmake_DATA = harfbuzz-config.cmake
162 EXTRA_DIST += harfbuzz.pc.in harfbuzz-config.cmake.in
164 lib_LTLIBRARIES += libharfbuzz-subset.la
165 libharfbuzz_subset_la_SOURCES = $(HB_SUBSET_sources)
166 libharfbuzz_subset_la_CPPFLAGS = $(HBCFLAGS)
167 libharfbuzz_subset_la_LDFLAGS = $(base_link_flags) $(export_symbols_subset)
168 libharfbuzz_subset_la_LIBADD = libharfbuzz.la
169 EXTRA_libharfbuzz_subset_la_DEPENDENCIES = $(harfbuzz_subset_def_dependency)
170 pkginclude_HEADERS += $(HB_SUBSET_headers)
171 pkgconfig_DATA += harfbuzz-subset.pc
172 EXTRA_DIST += harfbuzz-subset.pc.in
176 -DHB_MAX_NESTING_LEVEL=3 \
177 -DHB_SANITIZE_MAX_EDITS=3 \
178 -DHB_SANITIZE_MAX_OPS_FACTOR=3 \
179 -DHB_SANITIZE_MAX_OPS_MIN=128 \
180 -DHB_BUFFER_MAX_LEN_FACTOR=3 \
181 -DHB_BUFFER_MAX_LEN_MIN=8 \
182 -DHB_BUFFER_MAX_LEN_DEFAULT=128 \
183 -DHB_BUFFER_MAX_OPS_FACTOR=8 \
184 -DHB_BUFFER_MAX_OPS_MIN=64 \
185 -DHB_BUFFER_MAX_OPS_DEFAULT=1024 \
187 EXTRA_LTLIBRARIES = libharfbuzz-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
198 HBCFLAGS += $(ICU_CFLAGS)
199 HBLIBS += $(ICU_LIBS)
200 HBSOURCES += $(HB_ICU_sources)
201 HBHEADERS += $(HB_ICU_headers)
203 lib_LTLIBRARIES += libharfbuzz-icu.la
204 libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
205 libharfbuzz_icu_la_CPPFLAGS = $(HBCFLAGS) $(ICU_CFLAGS)
206 libharfbuzz_icu_la_LDFLAGS = $(base_link_flags) $(export_symbols_icu)
207 libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
208 EXTRA_libharfbuzz_icu_la_DEPENDENCIES = $(harfbuzz_icu_def_dependency)
209 pkginclude_HEADERS += $(HB_ICU_headers)
210 pkgconfig_DATA += harfbuzz-icu.pc
213 EXTRA_DIST += harfbuzz-icu.pc.in
216 lib_LTLIBRARIES += libharfbuzz-gobject.la
217 libharfbuzz_gobject_la_LINK = $(chosen_linker) $(libharfbuzz_gobject_la_LDFLAGS)
218 libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_DIST_sources)
219 nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_NODIST_sources)
220 libharfbuzz_gobject_la_CPPFLAGS = $(HBCFLAGS) $(HBNOLIBCXXFLAGS) $(GOBJECT_CFLAGS)
221 libharfbuzz_gobject_la_LDFLAGS = $(base_link_flags)
222 libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
223 EXTRA_libharfbuzz_gobject_la_DEPENDENCIES = $(harfbuzz_gobject_def_dependency)
224 pkginclude_HEADERS += $(HB_GOBJECT_DIST_headers)
225 nodist_pkginclude_HEADERS += $(HB_GOBJECT_NODIST_headers)
226 pkgconfig_DATA += harfbuzz-gobject.pc
229 $(HB_GOBJECT_ENUM_sources) \
230 $(HB_GOBJECT_ENUM_headers) \
233 $(HB_GOBJECT_ENUM_sources) \
234 $(HB_GOBJECT_ENUM_headers) \
236 hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
237 $(AM_V_GEN) $(GLIB_MKENUMS) \
238 --identifier-prefix hb_ --symbol-prefix hb_gobject \
240 sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \
241 || ($(RM) "$@"; false)
244 harfbuzz-gobject.pc.in \
245 hb-gobject-enums.cc.tmpl \
246 hb-gobject-enums.h.tmpl \
250 %.pc: %.pc.in $(top_builddir)/config.status
252 $(SED) -e 's@%prefix%@$(prefix)@g' \
253 -e 's@%exec_prefix%@$(exec_prefix)@g' \
254 -e 's@%libdir%@$(libdir)@g' \
255 -e 's@%includedir%@$(includedir)@g' \
256 -e 's@%libs_private%@$(HBNONPCLIBS)@g' \
257 -e 's@%requires_private%@$(HBDEPS)@g' \
258 -e 's@%VERSION%@$(VERSION)@g' \
260 || ($(RM) "$@"; false)
262 CLEANFILES += $(pkgconfig_DATA)
265 DEF_FILES = harfbuzz.def harfbuzz-subset.def harfbuzz-icu.def
267 DEF_FILES += harfbuzz-gobject.def
269 check: $(DEF_FILES) # For check-symbols.sh
270 CLEANFILES += $(DEF_FILES)
271 harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
272 $(AM_V_GEN) headers="$^" $(srcdir)/gen-def.py $@
273 harfbuzz-subset.def: $(HB_SUBSET_headers)
274 $(AM_V_GEN) headers="$^" $(srcdir)/gen-def.py $@
275 harfbuzz-icu.def: $(HB_ICU_headers)
276 $(AM_V_GEN) headers="$^" $(srcdir)/gen-def.py $@
277 harfbuzz-gobject.def: $(HB_GOBJECT_headers)
278 $(AM_V_GEN) headers="$^" $(srcdir)/gen-def.py $@
282 gen-arabic-table.py \
287 EXTRA_DIST += $(GENERATORS)
289 unicode-tables: arabic-table indic-table use-table
291 arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
292 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \
293 || ($(RM) hb-ot-shape-complex-arabic-table.hh; false)
295 indic-table: gen-indic-table.py IndicSyllabicCategory-7.0.0.txt IndicMatraCategory-7.0.0.txt Blocks.txt
296 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \
297 || ($(RM) hb-ot-shape-complex-indic-table.cc; false)
299 use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
300 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-use-table.cc \
301 || ($(RM) hb-ot-shape-complex-use-table.cc; false)
303 built-sources: $(BUILT_SOURCES)
305 .PHONY: unicode-tables arabic-table indic-table use-table built-sources
308 $(patsubst %,$(srcdir)/%,$(HB_BASE_RAGEL_GENERATED_sources)) \
309 $(patsubst %,$(srcdir)/%,$(HB_OT_RAGEL_GENERATED_sources)) \
311 BUILT_SOURCES += $(RAGEL_GENERATED)
313 $(HB_BASE_RAGEL_sources) \
314 $(HB_OT_RAGEL_sources) \
316 # We decided to add ragel-generated files to git...
317 #MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
318 $(srcdir)/%.hh: $(srcdir)/%.rl
319 $(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
320 || ($(RM) "$@"; false)
325 test-buffer-serialize \
327 test-would-substitute \
331 main_SOURCES = main.cc
332 main_CPPFLAGS = $(HBCFLAGS)
333 main_LDADD = libharfbuzz.la $(HBLIBS)
335 test_SOURCES = test.cc
336 test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
337 test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
339 test_would_substitute_SOURCES = test-would-substitute.cc
340 test_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
341 test_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
343 test_size_params_SOURCES = test-size-params.cc
344 test_size_params_CPPFLAGS = $(HBCFLAGS)
345 test_size_params_LDADD = libharfbuzz.la $(HBLIBS)
347 test_buffer_serialize_SOURCES = test-buffer-serialize.cc
348 test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
349 test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
351 dist_check_SCRIPTS = \
352 check-c-linkage-decls.sh \
354 check-header-guards.sh \
356 check-static-inits.sh \
359 TESTS += $(dist_check_SCRIPTS)
362 dist_check_SCRIPTS += \
373 dump_indic_data_SOURCES = dump-indic-data.cc hb-ot-shape-complex-indic-table.cc
374 dump_indic_data_CPPFLAGS = $(HBCFLAGS)
375 dump_indic_data_LDADD = libharfbuzz.la $(HBLIBS)
376 dump_khmer_data_SOURCES = dump-khmer-data.cc hb-ot-shape-complex-indic-table.cc
377 dump_khmer_data_CPPFLAGS = $(HBCFLAGS)
378 dump_khmer_data_LDADD = libharfbuzz.la $(HBLIBS)
379 dump_myanmar_data_SOURCES = dump-myanmar-data.cc hb-ot-shape-complex-indic-table.cc
380 dump_myanmar_data_CPPFLAGS = $(HBCFLAGS)
381 dump_myanmar_data_LDADD = libharfbuzz.la $(HBLIBS)
382 dump_use_data_SOURCES = dump-use-data.cc hb-ot-shape-complex-use-table.cc
383 dump_use_data_CPPFLAGS = $(HBCFLAGS)
384 dump_use_data_LDADD = libharfbuzz.la $(HBLIBS)
386 check_PROGRAMS += test-ot-tag test-unicode-ranges
387 TESTS += test-ot-tag test-unicode-ranges
389 test_ot_tag_SOURCES = hb-ot-tag.cc
390 test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN
391 test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS)
393 test_unicode_ranges_SOURCES = test-unicode-ranges.cc
394 test_unicode_ranges_LDADD = libharfbuzz.la $(HBLIBS)
396 TESTS_ENVIRONMENT = \
398 MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
399 HBSOURCES="$(HBSOURCES)" \
400 HBHEADERS="$(HBHEADERS)" \
403 if HAVE_INTROSPECTION
405 -include $(INTROSPECTION_MAKEFILE)
406 INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
407 INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
408 INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
409 INTROSPECTION_SCANNER_ENV = CC="$(CC)"
411 HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la
412 HarfBuzz_0_0_gir_INCLUDES = GObject-2.0
413 HarfBuzz_0_0_gir_CFLAGS = \
424 HarfBuzz_0_0_gir_LIBS = \
426 libharfbuzz-gobject.la \
428 HarfBuzz_0_0_gir_FILES = \
431 $(HB_GOBJECT_sources) \
432 $(HB_GOBJECT_headers) \
435 girdir = $(datadir)/gir-1.0
436 gir_DATA = $(INTROSPECTION_GIRS)
438 typelibdir = $(libdir)/girepository-1.0
439 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
441 CLEANFILES += $(gir_DATA) $(typelib_DATA)
445 -include $(top_srcdir)/git.mk