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