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