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 HBHEADERS = $(HB_BASE_headers)
29 HBNODISTHEADERS = $(HB_NODIST_headers)
32 HBSOURCES += $(HB_OT_sources)
33 HBHEADERS += $(HB_OT_headers)
37 HBSOURCES += $(HB_FALLBACK_sources)
41 HBCFLAGS += $(PTHREAD_CFLAGS)
42 HBNONPCLIBS += $(PTHREAD_LIBS)
46 HBCFLAGS += $(GLIB_CFLAGS)
47 HBLIBS += $(GLIB_LIBS)
48 HBDEPS += $(GLIB_DEPS)
49 HBSOURCES += $(HB_GLIB_sources)
50 HBHEADERS += $(HB_GLIB_headers)
54 HBCFLAGS += $(FREETYPE_CFLAGS)
55 HBLIBS += $(FREETYPE_LIBS)
57 # The following creates a recursive dependency on FreeType if FreeType is
58 # built with HarfBuzz support enabled. Newer pkg-config handles that just
59 # fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove
60 # in a year or two, or otherwise work around it...
61 #HBDEPS += $(FREETYPE_DEPS)
62 HBSOURCES += $(HB_FT_sources)
63 HBHEADERS += $(HB_FT_headers)
67 HBCFLAGS += $(GRAPHITE2_CFLAGS)
68 HBLIBS += $(GRAPHITE2_LIBS)
69 HBDEPS += $(GRAPHITE2_DEPS)
70 HBSOURCES += $(HB_GRAPHITE2_sources)
71 HBHEADERS += $(HB_GRAPHITE2_headers)
75 HBCFLAGS += $(UNISCRIBE_CFLAGS)
76 HBNONPCLIBS += $(UNISCRIBE_LIBS)
77 HBSOURCES += $(HB_UNISCRIBE_sources)
78 HBHEADERS += $(HB_UNISCRIBE_headers)
82 HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
83 HBNONPCLIBS += $(DIRECTWRITE_LIBS)
84 HBSOURCES += $(HB_DIRECTWRITE_sources)
85 HBHEADERS += $(HB_DIRECTWRITE_headers)
89 HBCFLAGS += $(CORETEXT_CFLAGS)
90 HBNONPCLIBS += $(CORETEXT_LIBS)
91 HBSOURCES += $(HB_CORETEXT_sources)
92 HBHEADERS += $(HB_CORETEXT_headers)
97 HBCFLAGS += -I$(srcdir)/hb-ucdn
98 HBLIBS += hb-ucdn/libhb-ucdn.la
99 HBSOURCES += $(HB_UCDN_sources)
101 DIST_SUBDIRS += hb-ucdn
104 # Put the library together
106 HBLIBS += $(HBNONPCLIBS)
109 export_symbols = -export-symbols harfbuzz.def
110 harfbuzz_def_dependency = harfbuzz.def
111 libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
113 # Use a C linker for GCC, not C++; Don't link to libstdc++
115 libharfbuzz_la_LINK = $(LINK) $(libharfbuzz_la_LDFLAGS)
117 libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
121 libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS) $(HBNODISTHEADERS)
122 libharfbuzz_la_CPPFLAGS = $(HBCFLAGS)
123 libharfbuzz_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) $(export_symbols) -no-undefined
124 libharfbuzz_la_LIBADD = $(HBLIBS)
125 EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
126 pkginclude_HEADERS = $(HBHEADERS)
127 nodist_pkginclude_HEADERS = $(HBNODISTHEADERS)
128 pkgconfigdir = $(libdir)/pkgconfig
129 pkgconfig_DATA = harfbuzz.pc
130 EXTRA_DIST += harfbuzz.pc.in
134 -DHB_MAX_NESTING_LEVEL=3 \
135 -DHB_SANITIZE_MAX_EDITS=3 \
136 -DHB_BUFFER_MAX_EXPANSION_FACTOR=3 \
137 -DHB_BUFFER_MAX_LEN_MIN=8 \
138 -DHB_BUFFER_MAX_LEN_DEFAULT=128 \
140 EXTRA_LTLIBRARIES = libharfbuzz-fuzzing.la
141 libharfbuzz_fuzzing_la_LINK = $(libharfbuzz_la_LINK)
142 libharfbuzz_fuzzing_la_SOURCES = $(libharfbuzz_la_SOURCES)
143 libharfbuzz_fuzzing_la_CPPFLAGS = $(libharfbuzz_la_CPPFLAGS) $(FUZZING_CPPFLAGS)
144 libharfbuzz_fuzzing_la_LDFLAGS = $(libharfbuzz_la_LDFLAGS)
145 libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD)
146 EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES = $(EXTRA_libharfbuzz_la_DEPENDENCIES)
147 CLEANFILES += libharfbuzz-fuzzing.la
151 HBCFLAGS += $(ICU_CFLAGS)
152 HBLIBS += $(ICU_LIBS)
153 HBSOURCES += $(HB_ICU_sources)
154 HBHEADERS += $(HB_ICU_headers)
156 lib_LTLIBRARIES += libharfbuzz-icu.la
157 libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
158 libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS)
159 libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
160 libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
161 pkginclude_HEADERS += $(HB_ICU_headers)
162 pkgconfig_DATA += harfbuzz-icu.pc
165 EXTRA_DIST += harfbuzz-icu.pc.in
168 lib_LTLIBRARIES += libharfbuzz-gobject.la
169 libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_sources)
170 nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_ENUM_sources)
171 libharfbuzz_gobject_la_CPPFLAGS = $(GOBJECT_CFLAGS)
172 libharfbuzz_gobject_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
173 libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
174 pkginclude_HEADERS += $(HB_GOBJECT_headers)
175 nodist_pkginclude_HEADERS += $(HB_GOBJECT_ENUM_headers)
176 pkgconfig_DATA += harfbuzz-gobject.pc
179 $(HB_GOBJECT_ENUM_sources) \
180 $(HB_GOBJECT_ENUM_headers) \
183 $(HB_GOBJECT_ENUM_sources) \
184 $(HB_GOBJECT_ENUM_headers) \
186 hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
187 $(AM_V_GEN) $(GLIB_MKENUMS) \
188 --identifier-prefix hb_ --symbol-prefix hb_gobject \
190 sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \
191 || ($(RM) "$@"; false)
194 harfbuzz-gobject.pc.in \
195 hb-gobject-enums.cc.tmpl \
196 hb-gobject-enums.h.tmpl \
200 %.pc: %.pc.in $(top_builddir)/config.status
202 $(SED) -e 's@%prefix%@$(prefix)@g' \
203 -e 's@%exec_prefix%@$(exec_prefix)@g' \
204 -e 's@%libdir%@$(libdir)@g' \
205 -e 's@%includedir%@$(includedir)@g' \
206 -e 's@%libs_private%@$(HBNONPCLIBS)@g' \
207 -e 's@%requires_private%@$(HBDEPS)@g' \
208 -e 's@%VERSION%@$(VERSION)@g' \
210 || ($(RM) "$@"; false)
212 CLEANFILES += $(pkgconfig_DATA)
215 CLEANFILES += harfbuzz.def
216 harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
217 $(AM_V_GEN) (echo EXPORTS; \
218 (cat $^ || echo 'hb_ERROR ()' ) | \
219 $(EGREP) '^hb_.* \(' | \
220 sed -e 's/ (.*//' | \
222 echo LIBRARY libharfbuzz-0.dll; \
224 @ ! grep -q hb_ERROR "$@" \
225 || ($(RM) "$@"; false)
229 gen-arabic-table.py \
233 EXTRA_DIST += $(GENERATORS)
235 unicode-tables: arabic-table indic-table use-table
237 arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
238 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \
239 || ($(RM) hb-ot-shape-complex-arabic-table.hh; false)
241 indic-table: gen-indic-table.py IndicSyllabicCategory-7.0.0.txt IndicMatraCategory-7.0.0.txt Blocks.txt
242 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \
243 || ($(RM) hb-ot-shape-complex-indic-table.cc; false)
245 use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
246 $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-use-table.cc \
247 || ($(RM) hb-ot-shape-complex-use-table.cc; false)
249 built-sources: $(BUILT_SOURCES)
251 .PHONY: unicode-tables arabic-table indic-table use-table built-sources
254 $(srcdir)/hb-buffer-deserialize-json.hh \
255 $(srcdir)/hb-buffer-deserialize-text.hh \
256 $(srcdir)/hb-ot-shape-complex-indic-machine.hh \
257 $(srcdir)/hb-ot-shape-complex-myanmar-machine.hh \
258 $(srcdir)/hb-ot-shape-complex-use-machine.hh \
260 BUILT_SOURCES += $(RAGEL_GENERATED)
262 hb-buffer-deserialize-json.rl \
263 hb-buffer-deserialize-text.rl \
264 hb-ot-shape-complex-indic-machine.rl \
265 hb-ot-shape-complex-myanmar-machine.rl \
266 hb-ot-shape-complex-use-machine.rl \
268 MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
269 $(srcdir)/%.hh: $(srcdir)/%.rl
270 $(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
271 || ($(RM) "$@"; false)
276 test-buffer-serialize \
278 test-would-substitute \
282 main_SOURCES = main.cc
283 main_CPPFLAGS = $(HBCFLAGS)
284 main_LDADD = libharfbuzz.la $(HBLIBS)
286 test_SOURCES = test.cc
287 test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
288 test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
290 test_would_substitute_SOURCES = test-would-substitute.cc
291 test_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
292 test_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
294 test_size_params_SOURCES = test-size-params.cc
295 test_size_params_CPPFLAGS = $(HBCFLAGS)
296 test_size_params_LDADD = libharfbuzz.la $(HBLIBS)
298 test_buffer_serialize_SOURCES = test-buffer-serialize.cc
299 test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
300 test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
302 dist_check_SCRIPTS = \
303 check-c-linkage-decls.sh \
305 check-header-guards.sh \
308 check-static-inits.sh \
315 test_ot_tag_SOURCES = hb-ot-tag.cc
316 test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN
317 test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS)
319 TESTS = $(dist_check_SCRIPTS) $(check_PROGRAMS)
320 TESTS_ENVIRONMENT = \
322 MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
323 HBSOURCES="$(HBSOURCES)" \
324 HBHEADERS="$(HBHEADERS) $(HBNODISTHEADERS)" \
327 if HAVE_INTROSPECTION
329 -include $(INTROSPECTION_MAKEFILE)
330 INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
331 INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
332 INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
333 INTROSPECTION_SCANNER_ENV = CC="$(CC)"
335 HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la
336 HarfBuzz_0_0_gir_INCLUDES = GObject-2.0
337 HarfBuzz_0_0_gir_CFLAGS = \
348 HarfBuzz_0_0_gir_LIBS = \
350 libharfbuzz-gobject.la \
352 HarfBuzz_0_0_gir_FILES = \
356 $(HB_GOBJECT_ENUM_sources) \
357 $(HB_GOBJECT_ENUM_headers) \
358 $(HB_GOBJECT_sources) \
359 $(HB_GOBJECT_STRUCTS_headers) \
362 girdir = $(datadir)/gir-1.0
363 gir_DATA = $(INTROSPECTION_GIRS)
365 typelibdir = $(libdir)/girepository-1.0
366 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
368 CLEANFILES += $(gir_DATA) $(typelib_DATA)
372 -include $(top_srcdir)/git.mk