# Allow building against system-wide graphite2/harfbuzz. diff --git config/Makefile.in config/Makefile.in index 14bfc0d..5383399 100644 --- config/Makefile.in +++ config/Makefile.in @@ -77,6 +77,8 @@ export:: $(export-preqs) -DMOZ_NATIVE_LIBEVENT=$(MOZ_NATIVE_LIBEVENT) \ -DMOZ_NATIVE_LIBVPX=$(MOZ_NATIVE_LIBVPX) \ -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \ + -DMOZ_NATIVE_GRAPHITE2=$(MOZ_NATIVE_GRAPHITE2) \ + -DMOZ_NATIVE_HARFBUZZ=$(MOZ_NATIVE_HARFBUZZ) \ $(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers $(INSTALL) system_wrappers $(DIST) diff --git config/system-headers config/system-headers index 18e8703..bdc5f82 100644 --- config/system-headers +++ config/system-headers @@ -1145,3 +1145,11 @@ unicode/utypes.h #endif libutil.h unwind.h +#if MOZ_NATIVE_GRAPHITE2==1 +graphite2/Font.h +graphite2/Segment.h +#endif +#if MOZ_NATIVE_HARFBUZZ==1 +harfbuzz/hb-ot.h +harfbuzz/hb.h +#endif diff --git configure.in configure.in index ac38f40..87536b7 100644 --- configure.in +++ configure.in @@ -8032,6 +8032,52 @@ if test "$USE_FC_FREETYPE"; then fi dnl ======================================================== +dnl Check for harfbuzz +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-harfbuzz, +[ --with-system-harfbuzz Use system harfbuzz (located with pkgconfig)], +MOZ_NATIVE_HARFBUZZ=1, +MOZ_NATIVE_HARFBUZZ=) + +if test -n "$MOZ_NATIVE_HARFBUZZ"; then + PKG_CHECK_MODULES(MOZ_HARFBUZZ, harfbuzz >= 0.9.25) +fi + +AC_SUBST(MOZ_NATIVE_HARFBUZZ) +AC_SUBST(MOZ_HARFBUZZ_CFLAGS) +AC_SUBST(MOZ_HARFBUZZ_LIBS) + +dnl ======================================================== +dnl Check for graphite2 +dnl ======================================================== +MOZ_ARG_WITH_BOOL(system-graphite2, +[ --with-system-graphite2 Use system graphite2 (located with pkgconfig)], +MOZ_NATIVE_GRAPHITE2=1, +MOZ_NATIVE_GRAPHITE2=) + +if test -n "$MOZ_NATIVE_GRAPHITE2"; then + PKG_CHECK_MODULES(MOZ_GRAPHITE2, graphite2) + + dnl graphite2.pc has bogus version, check manually + AC_TRY_COMPILE([ #include + #define GR2_VERSION_REQUIRE(major,minor,bugfix) \ + ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \ + * 100 + GR2_VERSION_BUGFIX >= \ + (major) * 10000 + (minor) * 100 + (bugfix) ) + ], [ + #if !GR2_VERSION_REQUIRE(1,2,4) + #error "Insufficient graphite2 version." + #endif + ], [], + [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])]) +fi + +AC_SUBST(MOZ_NATIVE_GRAPHITE2) +AC_SUBST(MOZ_GRAPHITE2_CFLAGS) +AC_SUBST(MOZ_GRAPHITE2_LIBS) + +dnl ======================================================== dnl Check for pixman and cairo dnl ======================================================== diff --git content/base/src/moz.build content/base/src/moz.build index d4f6380..0ee55df 100644 --- content/base/src/moz.build +++ content/base/src/moz.build @@ -179,6 +179,9 @@ SOURCES += [ 'nsObjectLoadingContent.cpp', ] +if CONFIG['MOZ_NATIVE_HARFBUZZ']: + SOURCES['nsContentUtils.cpp'].flags += [CONFIG['MOZ_HARFBUZZ_CFLAGS']] + EXTRA_COMPONENTS += [ 'contentAreaDropListener.js', 'contentAreaDropListener.manifest', diff --git gfx/moz.build gfx/moz.build index 519aa46..6929751 100644 --- gfx/moz.build +++ gfx/moz.build @@ -7,6 +7,12 @@ if CONFIG['MOZ_TREE_CAIRO']: DIRS += ['cairo'] +if not CONFIG['MOZ_NATIVE_GRAPHITE2']: + DIRS += ['graphite2/src' ] + +if not CONFIG['MOZ_NATIVE_HARFBUZZ']: + DIRS += ['harfbuzz/src'] + DIRS += [ '2d', 'ycbcr', @@ -15,8 +21,6 @@ DIRS += [ 'qcms', 'gl', 'layers', - 'graphite2/src', - 'harfbuzz/src', 'ots/src', 'thebes', 'ipc', diff --git gfx/skia/Makefile.in gfx/skia/Makefile.in index ee0efb2..98e169d6f 100644 --- gfx/skia/Makefile.in +++ gfx/skia/Makefile.in @@ -15,6 +15,10 @@ ifeq (qt,$(MOZ_WIDGET_TOOLKIT)) OS_CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PANGO_CFLAGS) $(CAIRO_FT_CFLAGS) endif +ifdef MOZ_NATIVE_HARFBUZZ +OS_CXXFLAGS += $(MOZ_HARFBUZZ_CFLAGS) +endif + include $(topsrcdir)/config/rules.mk ifeq ($(CPU_ARCH)_$(GNU_CC),arm_1) diff --git gfx/thebes/Makefile.in gfx/thebes/Makefile.in index 45c36ae..79d32cf 100644 --- gfx/thebes/Makefile.in +++ gfx/thebes/Makefile.in @@ -13,6 +13,14 @@ DEFINES := $(filter-out -DUNICODE,$(DEFINES)) CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS) CFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS) +ifdef MOZ_NATIVE_GRAPHITE2 +CXXFLAGS += $(MOZ_GRAPHITE2_CFLAGS) +endif + +ifdef MOZ_NATIVE_HARFBUZZ +CXXFLAGS += $(MOZ_HARFBUZZ_CFLAGS) +endif + ifeq ($(MOZ_WIDGET_TOOLKIT),android) CXXFLAGS += $(CAIRO_FT_CFLAGS) endif diff --git intl/unicharutil/util/Makefile.in intl/unicharutil/util/Makefile.in index f6b9f7c..60863f4 100644 --- intl/unicharutil/util/Makefile.in +++ intl/unicharutil/util/Makefile.in @@ -21,3 +21,7 @@ ifdef _MSC_VER OS_COMPILE_CXXFLAGS += -Zl OS_COMPILE_CFLAGS += -Zl endif + +ifdef MOZ_NATIVE_HARFBUZZ +CXXFLAGS += $(MOZ_HARFBUZZ_CFLAGS) +endif diff --git netwerk/dns/Makefile.in netwerk/dns/Makefile.in index 1cacbd7..f5d72bb 100644 --- netwerk/dns/Makefile.in +++ netwerk/dns/Makefile.in @@ -5,6 +5,10 @@ include $(topsrcdir)/config/rules.mk +ifdef MOZ_NATIVE_HARFBUZZ +CXXFLAGS += $(MOZ_HARFBUZZ_CFLAGS) +endif + # Generate the include file containing compact, static definitions # for effective TLD data. etld_data.inc: $(srcdir)/prepare_tlds.py $(srcdir)/effective_tld_names.dat diff --git toolkit/library/libxul.mk toolkit/library/libxul.mk index 67f0db9..d42137a 100644 --- toolkit/library/libxul.mk +++ toolkit/library/libxul.mk @@ -89,6 +89,14 @@ ifndef MOZ_TREE_PIXMAN EXTRA_DSO_LDOPTS += $(MOZ_PIXMAN_LIBS) endif +ifdef MOZ_NATIVE_GRAPHITE2 +EXTRA_DSO_LDOPTS += $(MOZ_GRAPHITE2_LIBS) +endif + +ifdef MOZ_NATIVE_HARFBUZZ +EXTRA_DSO_LDOPTS += $(MOZ_HARFBUZZ_LIBS) +endif + ifdef MOZ_DMD EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,dmd,$(DIST)/lib) endif