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