1 # Process this file with automake to produce Makefile.in
10 DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
12 # The following warning options are useful for debugging: -Wpadded
15 # Convenience targets:
16 lib: $(BUILT_SOURCES) libharfbuzz.la
17 fuzzing: $(BUILT_SOURCES) libharfbuzz-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)
30 HBNODISTHEADERS = $(HB_NODIST_headers)
33 HBSOURCES += $(HB_OT_sources)
34 HBSOURCES += $(HB_OT_RAGEL_GENERATED_sources)
35 HBHEADERS += $(HB_OT_headers)
39 HBSOURCES += $(HB_FALLBACK_sources)
43 HBCFLAGS += $(PTHREAD_CFLAGS)
44 HBNONPCLIBS += $(PTHREAD_LIBS)
48 HBCFLAGS += $(GLIB_CFLAGS)
49 HBLIBS += $(GLIB_LIBS)
50 HBDEPS += $(GLIB_DEPS)
51 HBSOURCES += $(HB_GLIB_sources)
52 HBHEADERS += $(HB_GLIB_headers)
56 HBCFLAGS += $(FREETYPE_CFLAGS)
57 HBLIBS += $(FREETYPE_LIBS)
59 # The following creates a recursive dependency on FreeType if FreeType is
60 # built with HarfBuzz support enabled. Newer pkg-config handles that just
61 # fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove
62 # in a year or two, or otherwise work around it...
63 #HBDEPS += $(FREETYPE_DEPS)
64 HBSOURCES += $(HB_FT_sources)
65 HBHEADERS += $(HB_FT_headers)
69 HBCFLAGS += $(GRAPHITE2_CFLAGS)
70 HBLIBS += $(GRAPHITE2_LIBS)
71 HBDEPS += $(GRAPHITE2_DEPS)
72 HBSOURCES += $(HB_GRAPHITE2_sources)
73 HBHEADERS += $(HB_GRAPHITE2_headers)
77 HBCFLAGS += $(UNISCRIBE_CFLAGS)
78 HBNONPCLIBS += $(UNISCRIBE_LIBS)
79 HBSOURCES += $(HB_UNISCRIBE_sources)
80 HBHEADERS += $(HB_UNISCRIBE_headers)
84 HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
85 HBNONPCLIBS += $(DIRECTWRITE_LIBS)
86 HBSOURCES += $(HB_DIRECTWRITE_sources)
87 HBHEADERS += $(HB_DIRECTWRITE_headers)
91 HBCFLAGS += $(CORETEXT_CFLAGS)
92 HBNONPCLIBS += $(CORETEXT_LIBS)
93 HBSOURCES += $(HB_CORETEXT_sources)
94 HBHEADERS += $(HB_CORETEXT_headers)
99 HBCFLAGS += -I$(srcdir)/hb-ucdn
100 HBLIBS += hb-ucdn/libhb-ucdn.la
101 HBSOURCES += $(HB_UCDN_sources)
103 DIST_SUBDIRS += hb-ucdn
106 # Put the library together
108 HBLIBS += $(HBNONPCLIBS)
111 export_symbols = -export-symbols harfbuzz.def
112 harfbuzz_def_dependency = harfbuzz.def
113 libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
115 # Use a C linker for GCC, not C++; Don't link to libstdc++
117 libharfbuzz_la_LINK = $(LINK) $(libharfbuzz_la_LDFLAGS)
119 libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
123 libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS) $(HBNODISTHEADERS)
124 libharfbuzz_la_CPPFLAGS = $(HBCFLAGS)
125 libharfbuzz_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) $(export_symbols) -no-undefined
126 libharfbuzz_la_LIBADD = $(HBLIBS)
127 EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
128 pkginclude_HEADERS = $(HBHEADERS)
129 nodist_pkginclude_HEADERS = $(HBNODISTHEADERS)
130 pkgconfigdir = $(libdir)/pkgconfig
131 pkgconfig_DATA = harfbuzz.pc
132 EXTRA_DIST += harfbuzz.pc.in
136 -DHB_MAX_NESTING_LEVEL=3 \
137 -DHB_SANITIZE_MAX_EDITS=3 \
138 -DHB_BUFFER_MAX_EXPANSION_FACTOR=3 \
139 -DHB_BUFFER_MAX_LEN_MIN=8 \
140 -DHB_BUFFER_MAX_LEN_DEFAULT=128 \
142 EXTRA_LTLIBRARIES = libharfbuzz-fuzzing.la
143 libharfbuzz_fuzzing_la_LINK = $(libharfbuzz_la_LINK)
144 libharfbuzz_fuzzing_la_SOURCES = $(libharfbuzz_la_SOURCES)
145 libharfbuzz_fuzzing_la_CPPFLAGS = $(libharfbuzz_la_CPPFLAGS) $(FUZZING_CPPFLAGS)
146 libharfbuzz_fuzzing_la_LDFLAGS = $(libharfbuzz_la_LDFLAGS)
147 libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD)
148 EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES = $(EXTRA_libharfbuzz_la_DEPENDENCIES)
149 CLEANFILES += libharfbuzz-fuzzing.la
153 HBCFLAGS += $(ICU_CFLAGS)
154 HBLIBS += $(ICU_LIBS)
155 HBSOURCES += $(HB_ICU_sources)
156 HBHEADERS += $(HB_ICU_headers)
158 lib_LTLIBRARIES += libharfbuzz-icu.la
159 libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
160 libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS)
161 libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
162 libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
163 pkginclude_HEADERS += $(HB_ICU_headers)
164 pkgconfig_DATA += harfbuzz-icu.pc
167 EXTRA_DIST += harfbuzz-icu.pc.in
170 lib_LTLIBRARIES += libharfbuzz-gobject.la
171 libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_sources)
172 nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_ENUM_sources)
173 libharfbuzz_gobject_la_CPPFLAGS = $(GOBJECT_CFLAGS)
174 libharfbuzz_gobject_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
175 libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
176 pkginclude_HEADERS += $(HB_GOBJECT_headers)
177 nodist_pkginclude_HEADERS += $(HB_GOBJECT_ENUM_headers)
178 pkgconfig_DATA += harfbuzz-gobject.pc
181 $(HB_GOBJECT_ENUM_sources) \
182 $(HB_GOBJECT_ENUM_headers) \
185 $(HB_GOBJECT_ENUM_sources) \
186 $(HB_GOBJECT_ENUM_headers) \
188 hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
189 $(AM_V_GEN) $(GLIB_MKENUMS) \
190 --identifier-prefix hb_ --symbol-prefix hb_gobject \
192 sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \
193 || ($(RM) "$@"; false)
196 harfbuzz-gobject.pc.in \
197 hb-gobject-enums.cc.tmpl \
198 hb-gobject-enums.h.tmpl \
202 %.pc: %.pc.in $(top_builddir)/config.status
204 $(SED) -e 's@%prefix%@$(prefix)@g' \
205 -e 's@%exec_prefix%@$(exec_prefix)@g' \
206 -e 's@%libdir%@$(libdir)@g' \
207 -e 's@%includedir%@$(includedir)@g' \
208 -e 's@%libs_private%@$(HBNONPCLIBS)@g' \
209 -e 's@%requires_private%@$(HBDEPS)@g' \
210 -e 's@%VERSION%@$(VERSION)@g' \
212 || ($(RM) "$@"; false)
214 CLEANFILES += $(pkgconfig_DATA)
217 CLEANFILES += harfbuzz.def
218 harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
219 $(AM_V_GEN) (echo EXPORTS; \
220 (cat $^ || echo 'hb_ERROR ()' ) | \
221 $(EGREP) '^hb_.* \(' | \
222 sed -e 's/ (.*//' | \
224 echo LIBRARY libharfbuzz-0.dll; \
226 @ ! grep -q hb_ERROR "$@" \
227 || ($(RM) "$@"; false)
231 gen-arabic-table.py \
235 EXTRA_DIST += $(GENERATORS)
237 unicode-tables: arabic-table indic-table use-table
239 arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
240 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \
241 || ($(RM) hb-ot-shape-complex-arabic-table.hh; false)
243 indic-table: gen-indic-table.py IndicSyllabicCategory-7.0.0.txt IndicMatraCategory-7.0.0.txt Blocks.txt
244 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \
245 || ($(RM) hb-ot-shape-complex-indic-table.cc; false)
247 use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
248 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-use-table.cc \
249 || ($(RM) hb-ot-shape-complex-use-table.cc; false)
251 built-sources: $(BUILT_SOURCES)
253 .PHONY: unicode-tables arabic-table indic-table use-table built-sources
256 $(patsubst %,$(srcdir)/%,$(HB_BASE_RAGEL_GENERATED_sources)) \
257 $(patsubst %,$(srcdir)/%,$(HB_OT_RAGEL_GENERATED_sources)) \
259 BUILT_SOURCES += $(RAGEL_GENERATED)
261 $(HB_BASE_RAGEL_sources) \
262 $(HB_OT_RAGEL_sources) \
264 MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
265 $(srcdir)/%.hh: $(srcdir)/%.rl
266 $(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
267 || ($(RM) "$@"; false)
272 test-buffer-serialize \
274 test-would-substitute \
278 main_SOURCES = main.cc
279 main_CPPFLAGS = $(HBCFLAGS)
280 main_LDADD = libharfbuzz.la $(HBLIBS)
282 test_SOURCES = test.cc
283 test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
284 test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
286 test_would_substitute_SOURCES = test-would-substitute.cc
287 test_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
288 test_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
290 test_size_params_SOURCES = test-size-params.cc
291 test_size_params_CPPFLAGS = $(HBCFLAGS)
292 test_size_params_LDADD = libharfbuzz.la $(HBLIBS)
294 test_buffer_serialize_SOURCES = test-buffer-serialize.cc
295 test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
296 test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
298 check: harfbuzz.def # For check-defs.sh
300 dist_check_SCRIPTS = \
301 check-c-linkage-decls.sh \
303 check-header-guards.sh \
306 check-static-inits.sh \
313 test_ot_tag_SOURCES = hb-ot-tag.cc
314 test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN
315 test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS)
317 TESTS = $(dist_check_SCRIPTS) $(check_PROGRAMS)
318 TESTS_ENVIRONMENT = \
320 MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
321 HBSOURCES="$(HBSOURCES)" \
322 HBHEADERS="$(HBHEADERS) $(HBNODISTHEADERS)" \
325 if HAVE_INTROSPECTION
327 -include $(INTROSPECTION_MAKEFILE)
328 INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
329 INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
330 INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
331 INTROSPECTION_SCANNER_ENV = CC="$(CC)"
333 HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la
334 HarfBuzz_0_0_gir_INCLUDES = GObject-2.0
335 HarfBuzz_0_0_gir_CFLAGS = \
346 HarfBuzz_0_0_gir_LIBS = \
348 libharfbuzz-gobject.la \
350 HarfBuzz_0_0_gir_FILES = \
354 $(HB_GOBJECT_ENUM_sources) \
355 $(HB_GOBJECT_ENUM_headers) \
356 $(HB_GOBJECT_sources) \
357 $(HB_GOBJECT_STRUCTS_headers) \
360 girdir = $(datadir)/gir-1.0
361 gir_DATA = $(INTROSPECTION_GIRS)
363 typelibdir = $(libdir)/girepository-1.0
364 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
366 CLEANFILES += $(gir_DATA) $(typelib_DATA)
370 -include $(top_srcdir)/git.mk