Imported Upstream version 0.9.35
[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
13 # The following warning options are useful for debugging: -Wpadded
14 #AM_CXXFLAGS =
15
16 lib_LTLIBRARIES = libharfbuzz.la
17
18 HBCFLAGS =
19 HBLIBS =
20 HBSOURCES =  \
21         hb-atomic-private.hh \
22         hb-blob.cc \
23         hb-buffer-deserialize-json.hh \
24         hb-buffer-deserialize-text.hh \
25         hb-buffer-private.hh \
26         hb-buffer-serialize.cc \
27         hb-buffer.cc \
28         hb-cache-private.hh \
29         hb-common.cc \
30         hb-face-private.hh \
31         hb-face.cc \
32         hb-font-private.hh \
33         hb-font.cc \
34         hb-mutex-private.hh \
35         hb-object-private.hh \
36         hb-open-file-private.hh \
37         hb-open-type-private.hh \
38         hb-ot-cmap-table.hh \
39         hb-ot-head-table.hh \
40         hb-ot-hhea-table.hh \
41         hb-ot-hmtx-table.hh \
42         hb-ot-maxp-table.hh \
43         hb-ot-name-table.hh \
44         hb-ot-tag.cc \
45         hb-private.hh \
46         hb-set-private.hh \
47         hb-set.cc \
48         hb-shape.cc \
49         hb-shape-plan-private.hh \
50         hb-shape-plan.cc \
51         hb-shaper-list.hh \
52         hb-shaper-impl-private.hh \
53         hb-shaper-private.hh \
54         hb-shaper.cc \
55         hb-unicode-private.hh \
56         hb-unicode.cc \
57         hb-utf-private.hh \
58         hb-warning.cc \
59         $(NULL)
60 HBHEADERS = \
61         hb.h \
62         hb-blob.h \
63         hb-buffer.h \
64         hb-common.h \
65         hb-deprecated.h \
66         hb-face.h \
67         hb-font.h \
68         hb-set.h \
69         hb-shape.h \
70         hb-shape-plan.h \
71         hb-unicode.h \
72         $(NULL)
73 HBNODISTHEADERS = \
74         hb-version.h \
75         $(NULL)
76
77 if HAVE_OT
78 HBSOURCES += \
79         hb-ot-font.cc \
80         hb-ot-layout.cc \
81         hb-ot-layout-common-private.hh \
82         hb-ot-layout-gdef-table.hh \
83         hb-ot-layout-gpos-table.hh \
84         hb-ot-layout-gsubgpos-private.hh \
85         hb-ot-layout-gsub-table.hh \
86         hb-ot-layout-jstf-table.hh \
87         hb-ot-layout-private.hh \
88         hb-ot-map.cc \
89         hb-ot-map-private.hh \
90         hb-ot-shape.cc \
91         hb-ot-shape-complex-arabic.cc \
92         hb-ot-shape-complex-arabic-fallback.hh \
93         hb-ot-shape-complex-arabic-table.hh \
94         hb-ot-shape-complex-arabic-win1256.hh \
95         hb-ot-shape-complex-default.cc \
96         hb-ot-shape-complex-hangul.cc \
97         hb-ot-shape-complex-hebrew.cc \
98         hb-ot-shape-complex-indic.cc \
99         hb-ot-shape-complex-indic-machine.hh \
100         hb-ot-shape-complex-indic-private.hh \
101         hb-ot-shape-complex-indic-table.cc \
102         hb-ot-shape-complex-myanmar.cc \
103         hb-ot-shape-complex-myanmar-machine.hh \
104         hb-ot-shape-complex-sea.cc \
105         hb-ot-shape-complex-sea-machine.hh \
106         hb-ot-shape-complex-thai.cc \
107         hb-ot-shape-complex-tibetan.cc \
108         hb-ot-shape-complex-private.hh \
109         hb-ot-shape-normalize-private.hh \
110         hb-ot-shape-normalize.cc \
111         hb-ot-shape-fallback-private.hh \
112         hb-ot-shape-fallback.cc \
113         hb-ot-shape-private.hh \
114         $(NULL)
115 HBHEADERS += \
116         hb-ot.h \
117         hb-ot-font.h \
118         hb-ot-layout.h \
119         hb-ot-shape.h \
120         hb-ot-tag.h \
121         $(NULL)
122 endif
123
124 if HAVE_FALLBACK
125 HBSOURCES += hb-fallback-shape.cc
126 endif
127
128 if HAVE_PTHREAD
129 HBCFLAGS += $(PTHREAD_CFLAGS)
130 HBLIBS   += $(PTHREAD_LIBS)
131 endif
132
133 if HAVE_GLIB
134 HBCFLAGS += $(GLIB_CFLAGS)
135 HBLIBS   += $(GLIB_LIBS)
136 HBSOURCES += hb-glib.cc
137 HBHEADERS += hb-glib.h
138 endif
139
140 if HAVE_FREETYPE
141 HBCFLAGS += $(FREETYPE_CFLAGS)
142 HBLIBS   += $(FREETYPE_LIBS)
143 HBSOURCES += hb-ft.cc
144 HBHEADERS += hb-ft.h
145 endif
146
147 if HAVE_GRAPHITE2
148 HBCFLAGS += $(GRAPHITE2_CFLAGS)
149 HBLIBS   += $(GRAPHITE2_LIBS)
150 HBSOURCES += hb-graphite2.cc
151 HBHEADERS += hb-graphite2.h
152 endif
153
154 if HAVE_UNISCRIBE
155 HBCFLAGS += $(UNISCRIBE_CFLAGS)
156 HBLIBS   += $(UNISCRIBE_LIBS)
157 HBSOURCES += hb-uniscribe.cc
158 HBHEADERS += hb-uniscribe.h
159 endif
160
161 if HAVE_CORETEXT
162 HBCFLAGS += $(CORETEXT_CFLAGS)
163 HBLIBS   += $(CORETEXT_LIBS)
164 HBSOURCES += hb-coretext.cc
165 HBHEADERS += hb-coretext.h
166 endif
167
168 if HAVE_UCDN
169 SUBDIRS += hb-ucdn
170 HBCFLAGS += -I$(srcdir)/hb-ucdn
171 HBLIBS   += hb-ucdn/libhb-ucdn.la
172 HBSOURCES += hb-ucdn.cc
173 endif
174 DIST_SUBDIRS += hb-ucdn
175
176
177 # Put the library together
178
179 if OS_WIN32
180 export_symbols = -export-symbols harfbuzz.def
181 harfbuzz_def_dependency = harfbuzz.def
182 libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
183 else
184 # Use a C linker for GCC, not C++; Don't link to libstdc++
185 if HAVE_GCC
186 libharfbuzz_la_LINK = $(LINK) $(libharfbuzz_la_LDFLAGS)
187 else
188 libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
189 endif
190 endif
191
192 libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS) $(HBNODISTHEADERS)
193 libharfbuzz_la_CPPFLAGS = $(HBCFLAGS)
194 libharfbuzz_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) $(export_symbols) -no-undefined
195 libharfbuzz_la_LIBADD = $(HBLIBS)
196 EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
197 pkginclude_HEADERS = $(HBHEADERS)
198 nodist_pkginclude_HEADERS = $(HBNODISTHEADERS)
199 pkgconfigdir = $(libdir)/pkgconfig
200 pkgconfig_DATA = harfbuzz.pc
201 EXTRA_DIST += harfbuzz.pc.in
202
203 if HAVE_ICU
204 lib_LTLIBRARIES += libharfbuzz-icu.la
205 libharfbuzz_icu_la_SOURCES = hb-icu.cc
206 libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS)
207 libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
208 libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
209 pkginclude_HEADERS += hb-icu.h
210 pkgconfig_DATA += harfbuzz-icu.pc
211 endif
212 EXTRA_DIST += harfbuzz-icu.pc.in
213
214 if HAVE_GOBJECT
215 lib_LTLIBRARIES += libharfbuzz-gobject.la
216 libharfbuzz_gobject_la_SOURCES = hb-gobject-structs.cc
217 nodist_libharfbuzz_gobject_la_SOURCES = hb-gobject-enums.cc
218 libharfbuzz_gobject_la_CPPFLAGS = $(GOBJECT_CFLAGS)
219 libharfbuzz_gobject_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
220 libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
221 pkginclude_HEADERS += hb-gobject.h hb-gobject-structs.h
222 nodist_pkginclude_HEADERS += hb-gobject-enums.h
223 pkgconfig_DATA += harfbuzz-gobject.pc
224
225 BUILT_SOURCES += \
226         hb-gobject-enums.cc \
227         hb-gobject-enums.h \
228         $(NULL)
229 DISTCLEANFILES += \
230         hb-gobject-enums.cc \
231         hb-gobject-enums.h \
232         $(NULL)
233 hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
234         $(AM_V_GEN) $(GLIB_MKENUMS) \
235                 --identifier-prefix hb_ --symbol-prefix hb_gobject \
236                 --template $^ | \
237         sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@.tmp" && \
238         mv "$@.tmp" "$@" || ( $(RM) "@.tmp" && false )
239 endif
240 EXTRA_DIST += \
241         harfbuzz-gobject.pc.in \
242         hb-gobject-enums.cc.tmpl \
243         hb-gobject-enums.h.tmpl \
244         $(NULL)
245
246
247 %.pc: %.pc.in $(top_builddir)/config.status
248         $(AM_V_GEN) \
249         $(SED)  -e 's@%prefix%@$(prefix)@g' \
250                 -e 's@%exec_prefix%@$(exec_prefix)@g' \
251                 -e 's@%libdir%@$(libdir)@g' \
252                 -e 's@%includedir%@$(includedir)@g' \
253                 -e 's@%VERSION%@$(VERSION)@g' \
254         "$<" \
255         > "$@.tmp" && mv "$@.tmp" "$@" || ( $(RM) "$@.tmp"; false )
256
257 CLEANFILES += $(pkgconfig_DATA)
258
259
260 CLEANFILES += harfbuzz.def
261 harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
262         $(AM_V_GEN) (echo EXPORTS; \
263         (cat $^ || echo 'hb_ERROR ()' ) | \
264         $(EGREP) '^hb_.* \(' | \
265         sed -e 's/ (.*//' | \
266         LANG=C sort; \
267         echo LIBRARY libharfbuzz-$(HB_VERSION_MAJOR).dll; \
268         ) >"$@.tmp"
269         @ ! grep -q hb_ERROR "$@.tmp" && mv "$@.tmp" "$@" || ($(RM) "$@"; false)
270
271
272 GENERATORS = \
273         gen-arabic-table.py \
274         gen-indic-table.py \
275         $(NULL)
276 EXTRA_DIST += $(GENERATORS)
277
278 unicode-tables: arabic-table indic-table
279
280 indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt
281         $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc.tmp && \
282         mv hb-ot-shape-complex-indic-table.cc.tmp $(srcdir)/hb-ot-shape-complex-indic-table.cc || \
283         ($(RM) hb-ot-shape-complex-indic-table.cc.tmp; false)
284
285 arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
286         $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh.tmp && \
287         mv hb-ot-shape-complex-arabic-table.hh.tmp $(srcdir)/hb-ot-shape-complex-arabic-table.hh || \
288         ($(RM) hb-ot-shape-complex-arabic-table.hh.tmp; false)
289
290 built-sources: $(BUILT_SOURCES)
291
292 .PHONY: unicode-tables arabic-table indic-table built-sources
293
294 BUILT_SOURCES += \
295         hb-buffer-deserialize-json.hh \
296         hb-buffer-deserialize-text.hh \
297         hb-ot-shape-complex-indic-machine.hh \
298         hb-ot-shape-complex-myanmar-machine.hh \
299         hb-ot-shape-complex-sea-machine.hh \
300         $(NULL)
301 EXTRA_DIST += \
302         hb-buffer-deserialize-json.rl \
303         hb-buffer-deserialize-text.rl \
304         hb-ot-shape-complex-indic-machine.rl \
305         hb-ot-shape-complex-myanmar-machine.rl \
306         hb-ot-shape-complex-sea-machine.rl \
307         $(NULL)
308 .rl.hh:
309         $(AM_V_GEN)$(RAGEL) -e -F1 -o "$@.tmp" "$<" && \
310         mv "$@.tmp" "$@" || ( $(RM) "$@.tmp" && false )
311
312 noinst_PROGRAMS = \
313         main \
314         test \
315         test-buffer-serialize \
316         test-size-params \
317         test-would-substitute \
318         $(NULL)
319 bin_PROGRAMS =
320
321 main_SOURCES = main.cc
322 main_CPPFLAGS = $(HBCFLAGS)
323 main_LDADD = libharfbuzz.la $(HBLIBS)
324
325 test_SOURCES = test.cc
326 test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
327 test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
328
329 test_would_substitute_SOURCES = test-would-substitute.cc
330 test_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
331 test_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
332
333 test_size_params_SOURCES = test-size-params.cc
334 test_size_params_CPPFLAGS = $(HBCFLAGS)
335 test_size_params_LDADD = libharfbuzz.la $(HBLIBS)
336
337 test_buffer_serialize_SOURCES = test-buffer-serialize.cc
338 test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
339 test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
340
341 dist_check_SCRIPTS = \
342         check-c-linkage-decls.sh \
343         check-defs.sh \
344         check-header-guards.sh \
345         check-includes.sh \
346         check-libstdc++.sh \
347         check-static-inits.sh \
348         check-symbols.sh \
349         $(NULL)
350
351 TESTS = $(dist_check_SCRIPTS)
352 TESTS_ENVIRONMENT = \
353         srcdir="$(srcdir)" \
354         MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
355         HBSOURCES="$(HBSOURCES)" \
356         HBHEADERS="$(HBHEADERS) $(HBNODISTHEADERS)" \
357         $(NULL)
358
359 if HAVE_INTROSPECTION
360
361 -include $(INTROSPECTION_MAKEFILE)
362 INTROSPECTION_GIRS = HarfBuzz-$(HB_VERSION_MAJOR).0.gir # What does the 0 mean anyway?!
363 INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
364 INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
365 INTROSPECTION_SCANNER_ENV = CC="$(CC)"
366
367 HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la
368 HarfBuzz_0_0_gir_INCLUDES = GObject-2.0
369 HarfBuzz_0_0_gir_CFLAGS = \
370         $(INCLUDES) \
371         $(HBCFLAGS) \
372         -DHB_H \
373         -DHB_H_IN \
374         -DHB_OT_H \
375         -DHB_OT_H_IN \
376         -DHB_GOBJECT_H \
377         -DHB_GOBJECT_H_IN \
378         $(NULL)
379 HarfBuzz_0_0_gir_LIBS = \
380         libharfbuzz.la \
381         libharfbuzz-gobject.la \
382         $(NULL)
383 HarfBuzz_0_0_gir_FILES = \
384         $(HBHEADERS) \
385         $(HBNODISTHEADERS) \
386         $(HBSOURCES) \
387         hb-gobject-enums.cc \
388         hb-gobject-enums.h \
389         hb-gobject-structs.cc \
390         hb-gobject-structs.h \
391         $(NULL)
392
393 girdir = $(datadir)/gir-1.0
394 gir_DATA = $(INTROSPECTION_GIRS)
395
396 typelibdir = $(libdir)/girepository-1.0
397 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
398
399 CLEANFILES += $(gir_DATA) $(typelib_DATA)
400
401 endif
402
403 -include $(top_srcdir)/git.mk