• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Process this file with automake to produce Makefile.in
2
3NULL =
4SUBDIRS =
5DIST_SUBDIRS =
6BUILT_SOURCES =
7EXTRA_DIST =
8CLEANFILES =
9DISTCLEANFILES =
10MAINTAINERCLEANFILES =
11DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
12TESTS =
13check_PROGRAMS =
14
15# Convenience targets:
16lib: $(BUILT_SOURCES) libharfbuzz.la
17libs: $(BUILT_SOURCES) $(lib_LTLIBRARIES)
18
19lib_LTLIBRARIES = libharfbuzz.la
20
21include Makefile.sources
22
23HBCFLAGS =
24HBLIBS =
25HBNONPCLIBS =
26HBDEPS =
27HBSOURCES =  $(HB_BASE_sources)
28HBSOURCES += $(HB_BASE_RAGEL_GENERATED_sources)
29HBHEADERS = $(HB_BASE_headers)
30
31if HAVE_FALLBACK
32HBSOURCES += $(HB_FALLBACK_sources)
33endif
34
35if HAVE_PTHREAD
36HBCFLAGS += $(PTHREAD_CFLAGS)
37HBNONPCLIBS += $(PTHREAD_LIBS)
38endif
39
40if HAVE_GLIB
41HBCFLAGS += $(GLIB_CFLAGS)
42HBLIBS   += $(GLIB_LIBS)
43HBDEPS   += $(GLIB_DEPS)
44HBSOURCES += $(HB_GLIB_sources)
45HBHEADERS += $(HB_GLIB_headers)
46endif
47
48if HAVE_FREETYPE
49HBCFLAGS += $(FREETYPE_CFLAGS)
50HBLIBS   += $(FREETYPE_LIBS)
51# XXX
52# The following creates a recursive dependency on FreeType if FreeType is
53# built with HarfBuzz support enabled.  Newer pkg-config handles that just
54# fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes.  Remove
55# in a year or two, or otherwise work around it...
56#HBDEPS   += $(FREETYPE_DEPS)
57HBSOURCES += $(HB_FT_sources)
58HBHEADERS += $(HB_FT_headers)
59endif
60
61if HAVE_GRAPHITE2
62HBCFLAGS += $(GRAPHITE2_CFLAGS)
63HBLIBS   += $(GRAPHITE2_LIBS)
64HBDEPS   += $(GRAPHITE2_DEPS)
65HBSOURCES += $(HB_GRAPHITE2_sources)
66HBHEADERS += $(HB_GRAPHITE2_headers)
67endif
68
69if HAVE_UNISCRIBE
70HBCFLAGS += $(UNISCRIBE_CFLAGS)
71HBNONPCLIBS += $(UNISCRIBE_LIBS)
72HBSOURCES += $(HB_UNISCRIBE_sources)
73HBHEADERS += $(HB_UNISCRIBE_headers)
74endif
75
76if HAVE_DIRECTWRITE
77HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
78HBNONPCLIBS += $(DIRECTWRITE_LIBS)
79HBSOURCES += $(HB_DIRECTWRITE_sources)
80HBHEADERS += $(HB_DIRECTWRITE_headers)
81endif
82
83if HAVE_CORETEXT
84HBCFLAGS += $(CORETEXT_CFLAGS)
85HBNONPCLIBS += $(CORETEXT_LIBS)
86HBSOURCES += $(HB_CORETEXT_sources)
87HBHEADERS += $(HB_CORETEXT_headers)
88endif
89
90
91BUILT_SOURCES += \
92	hb-version.h
93
94$(srcdir)/hb-version.h: hb-version.h.in $(top_srcdir)/configure.ac
95	$(AM_V_GEN) $(SED) \
96		-e 's/[@]HB_VERSION_MAJOR@/$(HB_VERSION_MAJOR)/' \
97		-e 's/[@]HB_VERSION_MINOR@/$(HB_VERSION_MINOR)/' \
98		-e 's/[@]HB_VERSION_MICRO@/$(HB_VERSION_MICRO)/' \
99		-e 's/[@]HB_VERSION@/$(HB_VERSION)/' \
100		"$<" > "$@" || ($(RM) "$@"; false)
101
102# Put the library together
103
104HBLIBS += $(HBNONPCLIBS)
105
106if OS_WIN32
107export_symbols = -export-symbols harfbuzz.def
108harfbuzz_def_dependency = harfbuzz.def
109export_symbols_subset = -export-symbols harfbuzz-subset.def
110harfbuzz_subset_def_dependency = harfbuzz-subset.def
111export_symbols_icu = -export-symbols harfbuzz-icu.def
112harfbuzz_icu_def_dependency = harfbuzz-icu.def
113export_symbols_gobject = -export-symbols harfbuzz-gobject.def
114harfbuzz_gobject_def_dependency = harfbuzz-gobject.def
115chosen_linker = $(CXXLINK)
116else
117if WITH_LIBSTDCXX
118chosen_linker = $(CXXLINK)
119else
120if HAVE_GCC
121# Use a C linker for GCC, not C++; Don't link to libstdc++
122chosen_linker = $(LINK)
123else
124chosen_linker = $(CXXLINK)
125endif
126endif
127endif
128
129@CODE_COVERAGE_RULES@
130
131base_link_flags = $(AM_LDFLAGS) -lm -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
132libharfbuzz_la_LINK = $(chosen_linker) $(libharfbuzz_la_LDFLAGS)
133libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS)
134libharfbuzz_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS)
135libharfbuzz_la_LDFLAGS = $(base_link_flags) $(export_symbols) $(CODE_COVERAGE_LDFLAGS)
136libharfbuzz_la_LIBADD = $(HBLIBS)
137EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
138pkginclude_HEADERS = $(HBHEADERS)
139nodist_pkginclude_HEADERS =
140pkgconfigdir = $(libdir)/pkgconfig
141pkgconfig_DATA = harfbuzz.pc
142cmakedir = $(libdir)/cmake/harfbuzz
143cmake_DATA = harfbuzz-config.cmake
144EXTRA_DIST += hb-version.h.in harfbuzz.pc.in harfbuzz-config.cmake.in
145
146lib_LTLIBRARIES += libharfbuzz-subset.la
147libharfbuzz_subset_la_SOURCES = $(HB_SUBSET_sources)
148libharfbuzz_subset_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS)
149libharfbuzz_subset_la_LDFLAGS = $(base_link_flags) $(export_symbols_subset) $(CODE_COVERAGE_LDFLAGS)
150libharfbuzz_subset_la_LIBADD = libharfbuzz.la
151EXTRA_libharfbuzz_subset_la_DEPENDENCIES = $(harfbuzz_subset_def_dependency)
152pkginclude_HEADERS += $(HB_SUBSET_headers)
153pkgconfig_DATA += harfbuzz-subset.pc
154EXTRA_DIST += harfbuzz-subset.pc.in
155
156if HAVE_ICU
157if HAVE_ICU_BUILTIN
158HBCFLAGS += $(ICU_CFLAGS)
159HBLIBS += $(ICU_LIBS)
160HBSOURCES += $(HB_ICU_sources)
161HBHEADERS += $(HB_ICU_headers)
162else
163lib_LTLIBRARIES += libharfbuzz-icu.la
164libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
165libharfbuzz_icu_la_CPPFLAGS = $(HBCFLAGS) $(ICU_CFLAGS) $(CODE_COVERAGE_CFLAGS)
166libharfbuzz_icu_la_LDFLAGS = $(base_link_flags) $(export_symbols_icu) $(CODE_COVERAGE_LDFLAGS)
167libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
168EXTRA_libharfbuzz_icu_la_DEPENDENCIES = $(harfbuzz_icu_def_dependency)
169pkginclude_HEADERS += $(HB_ICU_headers)
170pkgconfig_DATA += harfbuzz-icu.pc
171endif
172endif
173EXTRA_DIST += harfbuzz-icu.pc.in
174
175if HAVE_GOBJECT
176lib_LTLIBRARIES += libharfbuzz-gobject.la
177libharfbuzz_gobject_la_LINK = $(chosen_linker) $(libharfbuzz_gobject_la_LDFLAGS)
178libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_DIST_sources)
179nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_NODIST_sources)
180libharfbuzz_gobject_la_CPPFLAGS = $(HBCFLAGS) $(GOBJECT_CFLAGS) $(CODE_COVERAGE_CFLAGS)
181libharfbuzz_gobject_la_LDFLAGS = $(base_link_flags) $(CODE_COVERAGE_LDFLAGS)
182libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
183EXTRA_libharfbuzz_gobject_la_DEPENDENCIES = $(harfbuzz_gobject_def_dependency)
184pkginclude_HEADERS += $(HB_GOBJECT_DIST_headers)
185nodist_pkginclude_HEADERS += $(HB_GOBJECT_NODIST_headers)
186pkgconfig_DATA += harfbuzz-gobject.pc
187
188BUILT_SOURCES += \
189	$(HB_GOBJECT_ENUM_sources) \
190	$(HB_GOBJECT_ENUM_headers) \
191	$(NULL)
192DISTCLEANFILES += \
193	$(HB_GOBJECT_ENUM_sources) \
194	$(HB_GOBJECT_ENUM_headers) \
195	$(NULL)
196hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
197	$(AM_V_GEN) PYTHONIOENCODING=UTF-8 $(GLIB_MKENUMS) \
198		--identifier-prefix hb_ --symbol-prefix hb_gobject \
199		--template $^ | \
200	sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \
201	|| ($(RM) "$@"; false)
202endif
203EXTRA_DIST += \
204	harfbuzz-gobject.pc.in \
205	hb-gobject-enums.cc.tmpl \
206	hb-gobject-enums.h.tmpl \
207	$(NULL)
208
209
210%.pc: %.pc.in $(top_builddir)/config.status
211	$(AM_V_GEN) \
212	$(SED)	-e 's@%prefix%@$(prefix)@g' \
213		-e 's@%exec_prefix%@$(exec_prefix)@g' \
214		-e 's@%libdir%@$(libdir)@g' \
215		-e 's@%includedir%@$(includedir)@g' \
216		-e 's@%libs_private%@$(HBNONPCLIBS)@g' \
217		-e 's@%requires_private%@$(HBDEPS)@g' \
218		-e 's@%VERSION%@$(VERSION)@g' \
219	"$<" > "$@" \
220	|| ($(RM) "$@"; false)
221
222CLEANFILES += $(pkgconfig_DATA)
223
224
225DEF_FILES = harfbuzz.def harfbuzz-subset.def harfbuzz-icu.def harfbuzz-deprecated-symbols.txt
226if HAVE_GOBJECT
227DEF_FILES += harfbuzz-gobject.def
228endif
229check: $(DEF_FILES) # For check-symbols.sh
230CLEANFILES += $(DEF_FILES)
231harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
232	$(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
233harfbuzz-subset.def: $(HB_SUBSET_headers)
234	$(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
235harfbuzz-icu.def: $(HB_ICU_headers)
236	$(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
237harfbuzz-gobject.def: $(HB_GOBJECT_headers)
238	$(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
239harfbuzz-deprecated-symbols.txt: $(srcdir)/hb-deprecated.h
240	$(AM_V_GEN) PLAIN_LIST=1 $(srcdir)/gen-def.py "$@" $^
241
242
243GENERATORS = \
244	gen-arabic-table.py \
245	gen-def.py \
246	gen-emoji-table.py \
247	gen-indic-table.py \
248	gen-os2-unicode-ranges.py \
249	gen-tag-table.py \
250	gen-ucd-table.py \
251	gen-use-table.py \
252	gen-vowel-constraints.py \
253	$(NULL)
254EXTRA_DIST += $(GENERATORS)
255
256unicode-tables: arabic-table indic-table tag-table use-table emoji-table
257
258arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
259	$(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-arabic-table.hh \
260	|| ($(RM) $(srcdir)/hb-ot-shape-complex-arabic-table.hh; false)
261
262indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt
263	$(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-indic-table.cc \
264	|| ($(RM) $(srcdir)/hb-ot-shape-complex-indic-table.cc; false)
265
266tag-table: gen-tag-table.py languagetags language-subtag-registry
267	$(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-tag-table.hh \
268	|| ($(RM) $(srcdir)/hb-ot-tag-table.hh; false)
269
270use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
271	$(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-use-table.cc \
272	|| ($(RM) $(srcdir)/hb-ot-shape-complex-use-table.cc; false)
273
274vowel-constraints: gen-vowel-constraints.py HBIndicVowelConstraints.txt Scripts.txt
275	$(AM_V_GEN) $(builddir)/$^ > $(srcdir)/hb-ot-shape-complex-vowel-constraints.cc \
276	|| ($(RM) $(srcdir)/hb-ot-shape-complex-vowel-constraints.cc; false)
277
278emoji-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
282built-sources: $(BUILT_SOURCES)
283
284.PHONY: unicode-tables arabic-table indic-table tag-table use-table vowel-constraints emoji-table built-sources
285
286RAGEL_GENERATED = \
287	$(patsubst %,$(srcdir)/%,$(HB_BASE_RAGEL_GENERATED_sources)) \
288	$(NULL)
289BUILT_SOURCES += $(RAGEL_GENERATED)
290EXTRA_DIST += \
291	$(HB_BASE_RAGEL_sources) \
292	$(NULL)
293# We decided to add ragel-generated files to git...
294#MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
295$(srcdir)/%.hh: $(srcdir)/%.rl
296	$(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
297	|| ($(RM) "$@"; false)
298
299noinst_PROGRAMS = \
300	main \
301	test \
302	test-buffer-serialize \
303	test-ot-name \
304	test-gpos-size-params \
305	test-gsub-would-substitute \
306	$(NULL)
307bin_PROGRAMS =
308
309main_SOURCES = main.cc
310main_CPPFLAGS = $(HBCFLAGS)
311main_LDADD = libharfbuzz.la $(HBLIBS)
312
313test_SOURCES = test.cc
314test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
315test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
316
317test_buffer_serialize_SOURCES = test-buffer-serialize.cc
318test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
319test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
320
321test_ot_name_SOURCES = test-ot-name.cc
322test_ot_name_CPPFLAGS = $(HBCFLAGS)
323test_ot_name_LDADD = libharfbuzz.la $(HBLIBS)
324
325test_gpos_size_params_SOURCES = test-gpos-size-params.cc
326test_gpos_size_params_CPPFLAGS = $(HBCFLAGS)
327test_gpos_size_params_LDADD = libharfbuzz.la $(HBLIBS)
328
329test_gsub_would_substitute_SOURCES = test-gsub-would-substitute.cc
330test_gsub_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
331test_gsub_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
332
333if HAVE_FREETYPE
334if HAVE_CAIRO_FT
335noinst_PROGRAMS += test-ot-color
336test_ot_color_SOURCES = test-ot-color.cc
337test_ot_color_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS) $(CAIRO_FT_CFLAGS)
338test_ot_color_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS) $(CAIRO_LIBS) $(CAIRO_FT_LIBS)
339endif # HAVE_CAIRO_FT
340endif # HAVE_FREETYPE
341
342dist_check_SCRIPTS = \
343	check-c-linkage-decls.sh \
344	check-externs.sh \
345	check-header-guards.sh \
346	check-includes.sh \
347	check-static-inits.sh \
348	check-symbols.sh \
349	$(NULL)
350TESTS += $(dist_check_SCRIPTS)
351
352if !WITH_LIBSTDCXX
353dist_check_SCRIPTS += \
354	check-libstdc++.sh \
355	$(NULL)
356endif
357
358check_PROGRAMS += \
359	dump-indic-data \
360	dump-khmer-data \
361	dump-myanmar-data \
362	dump-use-data \
363	$(NULL)
364dump_indic_data_SOURCES = dump-indic-data.cc hb-ot-shape-complex-indic-table.cc
365dump_indic_data_CPPFLAGS = $(HBCFLAGS)
366dump_indic_data_LDADD = libharfbuzz.la $(HBLIBS)
367dump_khmer_data_SOURCES = dump-khmer-data.cc hb-ot-shape-complex-indic-table.cc
368dump_khmer_data_CPPFLAGS = $(HBCFLAGS)
369dump_khmer_data_LDADD = libharfbuzz.la $(HBLIBS)
370dump_myanmar_data_SOURCES = dump-myanmar-data.cc hb-ot-shape-complex-indic-table.cc
371dump_myanmar_data_CPPFLAGS = $(HBCFLAGS)
372dump_myanmar_data_LDADD = libharfbuzz.la $(HBLIBS)
373dump_use_data_SOURCES = dump-use-data.cc hb-ot-shape-complex-use-table.cc
374dump_use_data_CPPFLAGS = $(HBCFLAGS)
375dump_use_data_LDADD = libharfbuzz.la $(HBLIBS)
376
377COMPILED_TESTS = test-algs test-iter test-meta test-ot-tag test-unicode-ranges
378COMPILED_TESTS_CPPFLAGS = $(HBCFLAGS) -DMAIN -UNDEBUG
379COMPILED_TESTS_LDADD = libharfbuzz.la $(HBLIBS)
380check_PROGRAMS += $(COMPILED_TESTS)
381TESTS += $(COMPILED_TESTS)
382
383test_algs_SOURCES = test-algs.cc hb-static.cc
384test_algs_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
385test_algs_LDADD = $(COMPILED_TESTS_LDADD)
386
387test_iter_SOURCES = test-iter.cc hb-static.cc
388test_iter_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
389test_iter_LDADD = $(COMPILED_TESTS_LDADD)
390
391test_meta_SOURCES = test-meta.cc hb-static.cc
392test_meta_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
393test_meta_LDADD = $(COMPILED_TESTS_LDADD)
394
395test_ot_tag_SOURCES = hb-ot-tag.cc
396test_ot_tag_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
397test_ot_tag_LDADD = $(COMPILED_TESTS_LDADD)
398
399test_unicode_ranges_SOURCES = test-unicode-ranges.cc
400test_unicode_ranges_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
401test_unicode_ranges_LDADD = $(COMPILED_TESTS_LDADD)
402
403TESTS_ENVIRONMENT = \
404	srcdir="$(srcdir)" \
405	MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
406	HBSOURCES="$(HBSOURCES)" \
407	HBHEADERS="$(HBHEADERS)" \
408	$(NULL)
409
410if HAVE_INTROSPECTION
411
412-include $(INTROSPECTION_MAKEFILE)
413INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
414INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
415INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
416INTROSPECTION_SCANNER_ENV = CC="$(CC)"
417
418HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la
419HarfBuzz_0_0_gir_INCLUDES = GObject-2.0
420HarfBuzz_0_0_gir_CFLAGS = \
421	$(INCLUDES) \
422	$(HBCFLAGS) \
423	-DHB_H \
424	-DHB_H_IN \
425	-DHB_OT_H \
426	-DHB_OT_H_IN \
427	-DHB_AAT_H \
428	-DHB_AAT_H_IN \
429	-DHB_GOBJECT_H \
430	-DHB_GOBJECT_H_IN \
431	-DHB_EXTERN= \
432	$(NULL)
433HarfBuzz_0_0_gir_LIBS = \
434	libharfbuzz.la \
435	libharfbuzz-gobject.la \
436	$(NULL)
437HarfBuzz_0_0_gir_FILES = \
438	$(HBHEADERS) \
439	$(HBSOURCES) \
440	$(HB_GOBJECT_sources) \
441	$(HB_GOBJECT_headers) \
442	$(NULL)
443
444girdir = $(datadir)/gir-1.0
445gir_DATA = $(INTROSPECTION_GIRS)
446
447typelibdir = $(libdir)/girepository-1.0
448typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
449
450CLEANFILES += $(gir_DATA) $(typelib_DATA)
451
452endif
453
454-include $(top_srcdir)/git.mk
455