# HG changeset patch # Parent ddfced51baf26d84a283f2838dc4cf3a1dbff7ec Add ability to use system-harfbuzz instead of bundled. https://bugzilla.mozilla.org/show_bug.cgi?id=847568 diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild --- a/config/system-headers.mozbuild +++ b/config/system-headers.mozbuild @@ -1227,16 +1227,23 @@ if CONFIG['OS_TARGET'] == 'Android': 'utils/TypeHelpers.h', 'utils/Unicode.h', 'utils/Vector.h', 'utils/VectorImpl.h', 'vr/gvr/capi/include/gvr_controller.h', 'vr/gvr/capi/include/gvr.h', ] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + system_headers += [ + 'harfbuzz/hb-glib.h', + 'harfbuzz/hb-ot.h', + 'harfbuzz/hb.h', + ] + if CONFIG['MOZ_JACK']: system_headers += [ 'jack/jack.h', 'jack/statistics.h', ] if CONFIG['MOZ_SYSTEM_JPEG']: system_headers += [ diff --git a/dom/base/moz.build b/dom/base/moz.build --- a/dom/base/moz.build +++ b/dom/base/moz.build @@ -543,16 +543,19 @@ include('/ipc/chromium/chromium-config.m FINAL_LIBRARY = 'xul' if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner']: DEFINES['HAVE_SIDEBAR'] = True if CONFIG['MOZ_X11']: CXXFLAGS += CONFIG['TK_CFLAGS'] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + GeneratedFile('UseCounterList.h', script='gen-usecounters.py', entry_point='use_counter_list', inputs=['UseCounters.conf']) GeneratedFile('UseCounterWorkerList.h', script='gen-usecounters.py', entry_point='use_counter_list', inputs=['UseCountersWorker.conf']) if CONFIG['CC_TYPE'] in ('clang', 'gcc'): CXXFLAGS += ['-Wno-error=shadow'] diff --git a/gfx/moz.build b/gfx/moz.build --- a/gfx/moz.build +++ b/gfx/moz.build @@ -8,26 +8,28 @@ with Files('**'): BUG_COMPONENT = ('Core', 'Graphics') SCHEDULES.inclusive += ['android-hw-gfx'] with Files('wr/**'): BUG_COMPONENT = ('Core', 'Graphics: WebRender') if CONFIG['MOZ_TREE_CAIRO']: DIRS += ['cairo'] +if not CONFIG['MOZ_SYSTEM_HARFBUZZ']: + DIRS += ['harfbuzz/src'] + DIRS += [ '2d', 'ycbcr', 'angle', 'src', 'qcms', 'gl', 'layers', 'graphite2/src', - 'harfbuzz/src', 'ots/src', 'thebes', 'ipc', 'vr', 'config', 'webrender_bindings', 'wgpu_bindings', ] diff --git a/gfx/skia/generate_mozbuild.py b/gfx/skia/generate_mozbuild.py --- a/gfx/skia/generate_mozbuild.py +++ b/gfx/skia/generate_mozbuild.py @@ -93,16 +93,19 @@ if CONFIG['CC_TYPE'] == 'gcc': if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): CXXFLAGS += [ '-Wno-implicit-fallthrough', '-Wno-inconsistent-missing-override', '-Wno-macro-redefined', '-Wno-unused-private-field', ] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk', 'android'): CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk': CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS'] if CONFIG['MOZ_ENABLE_SKIA_PDF_SFNTLY']: diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build --- a/gfx/skia/moz.build +++ b/gfx/skia/moz.build @@ -485,16 +485,19 @@ if CONFIG['CC_TYPE'] == 'gcc': if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'): CXXFLAGS += [ '-Wno-implicit-fallthrough', '-Wno-inconsistent-missing-override', '-Wno-macro-redefined', '-Wno-unused-private-field', ] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk', 'android'): CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk': CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS'] if CONFIG['MOZ_ENABLE_SKIA_PDF_SFNTLY']: diff --git a/gfx/thebes/moz.build b/gfx/thebes/moz.build --- a/gfx/thebes/moz.build +++ b/gfx/thebes/moz.build @@ -285,11 +285,14 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk' if CONFIG['MOZ_WAYLAND']: CXXFLAGS += CONFIG['MOZ_WAYLAND_CFLAGS'] LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES'] DEFINES['GRAPHITE2_STATIC'] = True +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + if CONFIG['CC_TYPE'] == 'clang': # Suppress warnings from Skia header files. SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough'] diff --git a/intl/unicharutil/util/moz.build b/intl/unicharutil/util/moz.build --- a/intl/unicharutil/util/moz.build +++ b/intl/unicharutil/util/moz.build @@ -20,9 +20,12 @@ UNIFIED_SOURCES += [ 'ICUUtils.cpp', 'IrishCasing.cpp', 'nsBidiUtils.cpp', 'nsSpecialCasingData.cpp', 'nsUnicharUtils.cpp', 'nsUnicodeProperties.cpp', ] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + FINAL_LIBRARY = 'xul' diff --git a/netwerk/dns/moz.build b/netwerk/dns/moz.build --- a/netwerk/dns/moz.build +++ b/netwerk/dns/moz.build @@ -80,12 +80,15 @@ GeneratedFile('etld_data.inc', script='p inputs=['effective_tld_names.dat']) # need to include etld_data.inc LOCAL_INCLUDES += [ '/netwerk/base', '/netwerk/protocol/http', ] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + USE_LIBS += ['icu'] if CONFIG['CC_TYPE'] in ('clang', 'gcc'): CXXFLAGS += ['-Wno-error=shadow'] diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build --- a/toolkit/library/moz.build +++ b/toolkit/library/moz.build @@ -234,16 +234,19 @@ if CONFIG['MOZ_ANDROID_GOOGLE_VR']: OS_LIBS += [ '-L%s' % CONFIG['MOZ_ANDROID_GOOGLE_VR_LIBS'], '-lgvr', ] OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS'] OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS'] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS'] + if CONFIG['MOZ_SYSTEM_JPEG']: OS_LIBS += CONFIG['MOZ_JPEG_LIBS'] if CONFIG['MOZ_SYSTEM_PNG']: OS_LIBS += CONFIG['MOZ_PNG_LIBS'] if CONFIG['MOZ_SYSTEM_WEBP']: OS_LIBS += CONFIG['MOZ_WEBP_LIBS'] diff --git a/toolkit/moz.configure b/toolkit/moz.configure --- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -397,16 +397,26 @@ def freetype2_combined_info(fontconfig_i return namespace( cflags=freetype2_info.cflags + fontconfig_info.cflags, libs=freetype2_info.libs + fontconfig_info.libs, ) add_old_configure_assignment('_HAVE_FREETYPE2', depends_if(freetype2_info)(lambda _: True)) +# HarfBuzz +# ============================================================== +option('--with-system-harfbuzz', + help="Use system harfbuzz (located with pkgconfig)") + +system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 2.3.1', + when='--with-system-harfbuzz') + +set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True)) + # Apple platform decoder support # ============================================================== @depends(toolkit) def applemedia(toolkit): if toolkit in ('cocoa', 'uikit'): return True set_config('MOZ_APPLEMEDIA', applemedia)