Home | History | Annotate | Download | only in src
      1 # Process this file with automake to produce Makefile.in
      2 
      3 SUBDIRS =
      4 DIST_SUBDIRS =
      5 BUILT_SOURCES =
      6 EXTRA_DIST =
      7 CLEANFILES =
      8 DISTCLEANFILES =
      9 MAINTAINERCLEANFILES =
     10 DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
     11 
     12 # The following warning options are useful for debugging: -Wpadded
     13 #AM_CXXFLAGS =
     14 
     15 # Convenience targets:
     16 lib: $(BUILT_SOURCES) libharfbuzz.la
     17 fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la
     18 
     19 lib_LTLIBRARIES = libharfbuzz.la
     20 
     21 include Makefile.sources
     22 
     23 HBCFLAGS =
     24 HBLIBS =
     25 HBNONPCLIBS =
     26 HBDEPS =
     27 HBSOURCES =  $(HB_BASE_sources)
     28 HBHEADERS = $(HB_BASE_headers)
     29 HBNODISTHEADERS = $(HB_NODIST_headers)
     30 
     31 if HAVE_OT
     32 HBSOURCES += $(HB_OT_sources)
     33 HBHEADERS += $(HB_OT_headers)
     34 endif
     35 
     36 if HAVE_FALLBACK
     37 HBSOURCES += $(HB_FALLBACK_sources)
     38 endif
     39 
     40 if HAVE_PTHREAD
     41 HBCFLAGS += $(PTHREAD_CFLAGS)
     42 HBNONPCLIBS += $(PTHREAD_LIBS)
     43 endif
     44 
     45 if HAVE_GLIB
     46 HBCFLAGS += $(GLIB_CFLAGS)
     47 HBLIBS   += $(GLIB_LIBS)
     48 HBDEPS   += $(GLIB_DEPS)
     49 HBSOURCES += $(HB_GLIB_sources)
     50 HBHEADERS += $(HB_GLIB_headers)
     51 endif
     52 
     53 if HAVE_FREETYPE
     54 HBCFLAGS += $(FREETYPE_CFLAGS)
     55 HBLIBS   += $(FREETYPE_LIBS)
     56 # XXX
     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)
     64 endif
     65 
     66 if HAVE_GRAPHITE2
     67 HBCFLAGS += $(GRAPHITE2_CFLAGS)
     68 HBLIBS   += $(GRAPHITE2_LIBS)
     69 HBDEPS   += $(GRAPHITE2_DEPS)
     70 HBSOURCES += $(HB_GRAPHITE2_sources)
     71 HBHEADERS += $(HB_GRAPHITE2_headers)
     72 endif
     73 
     74 if HAVE_UNISCRIBE
     75 HBCFLAGS += $(UNISCRIBE_CFLAGS)
     76 HBNONPCLIBS += $(UNISCRIBE_LIBS)
     77 HBSOURCES += $(HB_UNISCRIBE_sources)
     78 HBHEADERS += $(HB_UNISCRIBE_headers)
     79 endif
     80 
     81 if HAVE_DIRECTWRITE
     82 HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
     83 HBNONPCLIBS += $(DIRECTWRITE_LIBS)
     84 HBSOURCES += $(HB_DIRECTWRITE_sources)
     85 HBHEADERS += $(HB_DIRECTWRITE_headers)
     86 endif
     87 
     88 if HAVE_CORETEXT
     89 HBCFLAGS += $(CORETEXT_CFLAGS)
     90 HBNONPCLIBS += $(CORETEXT_LIBS)
     91 HBSOURCES += $(HB_CORETEXT_sources)
     92 HBHEADERS += $(HB_CORETEXT_headers)
     93 endif
     94 
     95 if HAVE_UCDN
     96 SUBDIRS += hb-ucdn
     97 HBCFLAGS += -I$(srcdir)/hb-ucdn
     98 HBLIBS   += hb-ucdn/libhb-ucdn.la
     99 HBSOURCES += $(HB_UCDN_sources)
    100 endif
    101 DIST_SUBDIRS += hb-ucdn
    102 
    103 
    104 # Put the library together
    105 
    106 HBLIBS += $(HBNONPCLIBS)
    107 
    108 if OS_WIN32
    109 export_symbols = -export-symbols harfbuzz.def
    110 harfbuzz_def_dependency = harfbuzz.def
    111 libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
    112 else
    113 # Use a C linker for GCC, not C++; Don't link to libstdc++
    114 if HAVE_GCC
    115 libharfbuzz_la_LINK = $(LINK) $(libharfbuzz_la_LDFLAGS)
    116 else
    117 libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
    118 endif
    119 endif
    120 
    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
    131 
    132 FUZZING_CPPFLAGS= \
    133 	-DHB_NDEBUG \
    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 \
    139 	$(NULL)
    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
    148 
    149 if HAVE_ICU
    150 if HAVE_ICU_BUILTIN
    151 HBCFLAGS += $(ICU_CFLAGS)
    152 HBLIBS += $(ICU_LIBS)
    153 HBSOURCES += $(HB_ICU_sources)
    154 HBHEADERS += $(HB_ICU_headers)
    155 else
    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
    163 endif
    164 endif
    165 EXTRA_DIST += harfbuzz-icu.pc.in
    166 
    167 if HAVE_GOBJECT
    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
    177 
    178 BUILT_SOURCES += \
    179 	$(HB_GOBJECT_ENUM_sources) \
    180 	$(HB_GOBJECT_ENUM_headers) \
    181 	$(NULL)
    182 DISTCLEANFILES += \
    183 	$(HB_GOBJECT_ENUM_sources) \
    184 	$(HB_GOBJECT_ENUM_headers) \
    185 	$(NULL)
    186 hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
    187 	$(AM_V_GEN) $(GLIB_MKENUMS) \
    188 		--identifier-prefix hb_ --symbol-prefix hb_gobject \
    189 		--template $^ | \
    190 	sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \
    191 	|| ($(RM) "$@"; false)
    192 endif
    193 EXTRA_DIST += \
    194 	harfbuzz-gobject.pc.in \
    195 	hb-gobject-enums.cc.tmpl \
    196 	hb-gobject-enums.h.tmpl \
    197 	$(NULL)
    198 
    199 
    200 %.pc: %.pc.in $(top_builddir)/config.status
    201 	$(AM_V_GEN) \
    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' \
    209 	"$<" > "$@" \
    210 	|| ($(RM) "$@"; false)
    211 
    212 CLEANFILES += $(pkgconfig_DATA)
    213 
    214 
    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/ (.*//' | \
    221 	LANG=C sort; \
    222 	echo LIBRARY libharfbuzz-0.dll; \
    223 	) >"$@"
    224 	@ ! grep -q hb_ERROR "$@" \
    225 	|| ($(RM) "$@"; false)
    226 
    227 
    228 GENERATORS = \
    229 	gen-arabic-table.py \
    230 	gen-indic-table.py \
    231 	gen-use-table.py \
    232 	$(NULL)
    233 EXTRA_DIST += $(GENERATORS)
    234 
    235 unicode-tables: arabic-table indic-table use-table
    236 
    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)
    240 
    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)
    244 
    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)
    248 
    249 built-sources: $(BUILT_SOURCES)
    250 
    251 .PHONY: unicode-tables arabic-table indic-table use-table built-sources
    252 
    253 RAGEL_GENERATED = \
    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 \
    259 	$(NULL)
    260 BUILT_SOURCES += $(RAGEL_GENERATED)
    261 EXTRA_DIST += \
    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 \
    267 	$(NULL)
    268 MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
    269 $(srcdir)/%.hh: $(srcdir)/%.rl
    270 	$(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
    271 	|| ($(RM) "$@"; false)
    272 
    273 noinst_PROGRAMS = \
    274 	main \
    275 	test \
    276 	test-buffer-serialize \
    277 	test-size-params \
    278 	test-would-substitute \
    279 	$(NULL)
    280 bin_PROGRAMS =
    281 
    282 main_SOURCES = main.cc
    283 main_CPPFLAGS = $(HBCFLAGS)
    284 main_LDADD = libharfbuzz.la $(HBLIBS)
    285 
    286 test_SOURCES = test.cc
    287 test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
    288 test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
    289 
    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)
    293 
    294 test_size_params_SOURCES = test-size-params.cc
    295 test_size_params_CPPFLAGS = $(HBCFLAGS)
    296 test_size_params_LDADD = libharfbuzz.la $(HBLIBS)
    297 
    298 test_buffer_serialize_SOURCES = test-buffer-serialize.cc
    299 test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
    300 test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
    301 
    302 dist_check_SCRIPTS = \
    303 	check-c-linkage-decls.sh \
    304 	check-defs.sh \
    305 	check-header-guards.sh \
    306 	check-includes.sh \
    307 	check-libstdc++.sh \
    308 	check-static-inits.sh \
    309 	check-symbols.sh \
    310 	$(NULL)
    311 
    312 check_PROGRAMS = \
    313 	test-ot-tag \
    314 	$(NULL)
    315 test_ot_tag_SOURCES = hb-ot-tag.cc
    316 test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN
    317 test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS)
    318 
    319 TESTS = $(dist_check_SCRIPTS) $(check_PROGRAMS)
    320 TESTS_ENVIRONMENT = \
    321 	srcdir="$(srcdir)" \
    322 	MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
    323 	HBSOURCES="$(HBSOURCES)" \
    324 	HBHEADERS="$(HBHEADERS) $(HBNODISTHEADERS)" \
    325 	$(NULL)
    326 
    327 if HAVE_INTROSPECTION
    328 
    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)"
    334 
    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 = \
    338 	$(INCLUDES) \
    339 	$(HBCFLAGS) \
    340 	-DHB_H \
    341 	-DHB_H_IN \
    342 	-DHB_OT_H \
    343 	-DHB_OT_H_IN \
    344 	-DHB_GOBJECT_H \
    345 	-DHB_GOBJECT_H_IN \
    346 	-DHB_EXTERN= \
    347 	$(NULL)
    348 HarfBuzz_0_0_gir_LIBS = \
    349 	libharfbuzz.la \
    350 	libharfbuzz-gobject.la \
    351 	$(NULL)
    352 HarfBuzz_0_0_gir_FILES = \
    353 	$(HBHEADERS) \
    354 	$(HBNODISTHEADERS) \
    355 	$(HBSOURCES) \
    356 	$(HB_GOBJECT_ENUM_sources) \
    357 	$(HB_GOBJECT_ENUM_headers) \
    358 	$(HB_GOBJECT_sources) \
    359 	$(HB_GOBJECT_STRUCTS_headers) \
    360 	$(NULL)
    361 
    362 girdir = $(datadir)/gir-1.0
    363 gir_DATA = $(INTROSPECTION_GIRS)
    364 
    365 typelibdir = $(libdir)/girepository-1.0
    366 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
    367 
    368 CLEANFILES += $(gir_DATA) $(typelib_DATA)
    369 
    370 endif
    371 
    372 -include $(top_srcdir)/git.mk
    373