mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-07-21 03:48:43 +00:00
14f6f230d7
This removes speech recognition, pocketsphinx, training models and the speech automated test interface. This also re-establishes proper use of MOZ_WEBSPEECH to work for the speech API (synthesis part only) that was a broken mess before, with some synth parts being always built, some parts being built only with it enabled and recognition parts being dependent on it. I'm pretty sure it'd be totally busted if you'd ever have tried building without MOZ_WEBPEECH before. Tested that synthesis still works as-intended. This resolves #1538
648 lines
20 KiB
Python
648 lines
20 KiB
Python
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
|
# Profiling
|
|
# ==============================================================
|
|
# Some of the options here imply an option from js/moz.configure,
|
|
# so, need to be declared before the include.
|
|
option('--enable-systrace', env='MOZ_USE_SYSTRACE',
|
|
help='Turn on systrace for the Gecko profiler on android/b2g')
|
|
|
|
@depends('--enable-systrace', target)
|
|
def systrace(value, target):
|
|
if value:
|
|
return True
|
|
|
|
set_define('MOZ_USE_SYSTRACE', systrace)
|
|
|
|
# JACK cubeb backend
|
|
# ==============================================================
|
|
option('--enable-jack', env='MOZ_JACK',
|
|
help='Enable JACK audio backend.')
|
|
|
|
@depends('--enable-jack')
|
|
def jack(value):
|
|
if value:
|
|
return True
|
|
|
|
set_config('MOZ_JACK', jack)
|
|
set_define('MOZ_JACK', jack)
|
|
|
|
# Javascript engine
|
|
# ==============================================================
|
|
include('../js/moz.configure')
|
|
|
|
|
|
# L10N
|
|
# ==============================================================
|
|
option('--with-l10n-base', nargs=1, env='L10NBASEDIR',
|
|
help='Path to l10n repositories')
|
|
|
|
@depends('--with-l10n-base')
|
|
@imports(_from='os.path', _import='isdir')
|
|
def l10n_base(value):
|
|
if value:
|
|
path = value[0]
|
|
if not isdir(path):
|
|
die("Invalid value --with-l10n-base, %s doesn't exist", path)
|
|
return os.path.realpath(os.path.abspath(path))
|
|
|
|
set_config('L10NBASEDIR', l10n_base)
|
|
|
|
|
|
# Default toolkit
|
|
# ==============================================================
|
|
# Normally, we'd want to use the `default` field on the option, but that
|
|
# requires --target to be resolved at --help time, which requires to run
|
|
# config.guess, which we want to avoid. Even better, we could actually set
|
|
# `choices` depending on the target, but that doesn't pan out for the same
|
|
# reason.
|
|
option('--enable-default-toolkit', nargs=1,
|
|
choices=('cairo-windows', 'cairo-gtk2', 'cairo-gtk2-x11', 'cairo-gtk3',
|
|
'cairo-cocoa', 'cairo-uikit'),
|
|
help='Select default toolkit')
|
|
|
|
@depends('--enable-default-toolkit', target)
|
|
def toolkit(value, target):
|
|
# Define possible choices for each platform. The default is the first one
|
|
# listed when there are several.
|
|
os = target.os
|
|
if target.os == 'WINNT':
|
|
platform_choices = ('cairo-windows',)
|
|
elif target.os == 'OSX':
|
|
platform_choices = ('cairo-cocoa',)
|
|
elif target.os == 'iOS':
|
|
platform_choices = ('cairo-uikit',)
|
|
else:
|
|
platform_choices = ('cairo-gtk3', 'cairo-gtk2', 'cairo-gtk2-x11')
|
|
|
|
if value:
|
|
if value[0] not in platform_choices:
|
|
die('`%s` is not a valid value for --enable-default-toolkit on %s\n'
|
|
'Valid values: %s', value[0], os, ', '.join(platform_choices))
|
|
return value[0]
|
|
|
|
return platform_choices[0]
|
|
|
|
|
|
@depends(toolkit)
|
|
def toolkit(toolkit):
|
|
if toolkit == 'cairo-gtk2-x11':
|
|
widget_toolkit = 'gtk2'
|
|
else:
|
|
widget_toolkit = toolkit.replace('cairo-', '')
|
|
return widget_toolkit
|
|
|
|
set_config('MOZ_WIDGET_TOOLKIT', toolkit)
|
|
add_old_configure_assignment('MOZ_WIDGET_TOOLKIT', toolkit)
|
|
|
|
@depends(toolkit)
|
|
def toolkit_gtk(toolkit):
|
|
if toolkit == 'gtk2':
|
|
return '2'
|
|
elif toolkit == 'gtk3':
|
|
return '3'
|
|
|
|
set_define('MOZ_WIDGET_GTK', toolkit_gtk)
|
|
|
|
@depends(toolkit)
|
|
def toolkit_define(toolkit):
|
|
if toolkit not in ('gtk2', 'gtk3', 'windows'):
|
|
return 'MOZ_WIDGET_%s' % toolkit.upper()
|
|
|
|
set_define(toolkit_define, True)
|
|
|
|
|
|
option('--without-x', env='WITHOUT_X', help='Disable X11 support')
|
|
|
|
@depends('--without-x', toolkit)
|
|
def x11(value, toolkit):
|
|
if not value:
|
|
die('--without-x is not supported')
|
|
|
|
x11_toolkits = ('gtk2', 'gtk3')
|
|
if value and value.origin != 'default' and toolkit not in x11_toolkits:
|
|
die('--with-x is only valid with --enable-default-toolkit={%s}',
|
|
','.join(x11_toolkits))
|
|
|
|
return True if value and toolkit in x11_toolkits else None
|
|
|
|
set_config('MOZ_ENABLE_XREMOTE', x11)
|
|
set_define('MOZ_ENABLE_XREMOTE', x11)
|
|
set_config('MOZ_X11', x11)
|
|
set_define('MOZ_X11', x11)
|
|
add_old_configure_assignment('MOZ_X11', x11)
|
|
|
|
# GL Provider
|
|
# ==============================================================
|
|
option('--with-gl-provider', nargs=1, help='Set GL provider backend type')
|
|
|
|
@depends('--with-gl-provider')
|
|
def gl_provider(value):
|
|
if value:
|
|
return value[0]
|
|
|
|
@depends(gl_provider)
|
|
def gl_provider_define(provider):
|
|
if provider:
|
|
return 'GLContextProvider%s' % provider
|
|
|
|
set_define('MOZ_GL_PROVIDER', gl_provider_define)
|
|
|
|
@depends(gl_provider, x11)
|
|
def gl_default_provider(value, x11):
|
|
if value:
|
|
return value
|
|
elif x11:
|
|
return 'GLX'
|
|
|
|
set_config('MOZ_GL_PROVIDER', gl_provider)
|
|
set_config('MOZ_GL_DEFAULT_PROVIDER', gl_default_provider)
|
|
|
|
@depends(gl_default_provider)
|
|
def gl_provider_define(provider):
|
|
if provider:
|
|
return 'GL_PROVIDER_%s' % provider
|
|
|
|
set_define(gl_provider_define, True)
|
|
|
|
|
|
# PDF printing
|
|
# ==============================================================
|
|
@depends(toolkit)
|
|
def pdf_printing(toolkit):
|
|
if toolkit in ('windows', 'gtk2', 'gtk3'):
|
|
return True
|
|
|
|
@depends(pdf_printing)
|
|
def pdf_surface_feature(pdf_printing):
|
|
if pdf_printing:
|
|
return '#define CAIRO_HAS_PDF_SURFACE 1'
|
|
else:
|
|
# CONFIGURE_SUBST_FILES need explicit empty values.
|
|
return ''
|
|
|
|
set_config('MOZ_PDF_PRINTING', pdf_printing)
|
|
set_config('PDF_SURFACE_FEATURE', pdf_surface_feature)
|
|
|
|
|
|
# Event loop instrumentation
|
|
# ==============================================================
|
|
option(env='MOZ_INSTRUMENT_EVENT_LOOP',
|
|
help='Force-enable event loop instrumentation')
|
|
|
|
@depends('MOZ_INSTRUMENT_EVENT_LOOP', toolkit)
|
|
def instrument_event_loop(value, toolkit):
|
|
if value or (toolkit in ('windows', 'gtk2', 'gtk3', 'cocoa') and value.origin == 'default'):
|
|
return True
|
|
|
|
set_config('MOZ_INSTRUMENT_EVENT_LOOP', instrument_event_loop)
|
|
set_define('MOZ_INSTRUMENT_EVENT_LOOP', instrument_event_loop)
|
|
|
|
|
|
# Fontconfig Freetype
|
|
# ==============================================================
|
|
option(env='USE_FC_FREETYPE',
|
|
help='Force-enable the use of fontconfig freetype')
|
|
|
|
@depends('USE_FC_FREETYPE', toolkit)
|
|
def fc_freetype(value, toolkit):
|
|
if value or (toolkit in ('gtk2', 'gtk3') and
|
|
value.origin == 'default'):
|
|
return True
|
|
|
|
add_old_configure_assignment('USE_FC_FREETYPE', fc_freetype)
|
|
|
|
# Pango
|
|
# ==============================================================
|
|
pkg_check_modules('MOZ_PANGO',
|
|
'pango >= 1.22.0 pangoft2 >= 1.22.0 pangocairo >= 1.22.0',
|
|
when=toolkit_gtk)
|
|
|
|
# Fontconfig
|
|
# ==============================================================
|
|
fontconfig_info = pkg_check_modules('_FONTCONFIG', 'fontconfig >= 2.7.0',
|
|
when=fc_freetype)
|
|
|
|
@depends(fc_freetype)
|
|
def check_for_freetype2(fc_freetype):
|
|
if fc_freetype:
|
|
return True
|
|
|
|
# Check for freetype2. Flags are combined with fontconfig flags.
|
|
freetype2_info = pkg_check_modules('_FT2', 'freetype2 >= 6.1.0',
|
|
when=check_for_freetype2)
|
|
|
|
@depends(fontconfig_info, freetype2_info)
|
|
def freetype2_combined_info(fontconfig_info, freetype2_info):
|
|
if not freetype2_info:
|
|
return
|
|
if not fontconfig_info:
|
|
return freetype2_info
|
|
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))
|
|
|
|
# Build Freetype in the tree
|
|
# ==============================================================
|
|
@depends(target)
|
|
def tree_freetype(target):
|
|
return None
|
|
|
|
set_define('MOZ_TREE_FREETYPE', tree_freetype)
|
|
set_config('MOZ_TREE_FREETYPE', tree_freetype)
|
|
add_old_configure_assignment('MOZ_TREE_FREETYPE', tree_freetype)
|
|
|
|
set_define('HAVE_FT_BITMAP_SIZE_Y_PPEM', tree_freetype)
|
|
set_define('HAVE_FT_GLYPHSLOT_EMBOLDEN', tree_freetype)
|
|
set_define('HAVE_FT_LOAD_SFNT_TABLE', tree_freetype)
|
|
|
|
@depends(freetype2_combined_info, tree_freetype, check_build_environment)
|
|
def ft2_info(freetype2_combined_info, tree_freetype, build_env):
|
|
if tree_freetype:
|
|
return namespace(cflags=('-I%s/modules/freetype2/include' % build_env.topsrcdir,),
|
|
libs=())
|
|
if freetype2_combined_info:
|
|
return freetype2_combined_info
|
|
|
|
set_config('FT2_LIBS', delayed_getattr(ft2_info, 'libs'))
|
|
add_old_configure_assignment('FT2_LIBS',
|
|
delayed_getattr(ft2_info, 'libs'))
|
|
add_old_configure_assignment('FT2_CFLAGS',
|
|
delayed_getattr(ft2_info, 'cflags'))
|
|
|
|
# Apple platform decoder support
|
|
# ==============================================================
|
|
@depends(toolkit)
|
|
def applemedia(toolkit):
|
|
if toolkit in ('cocoa', 'uikit'):
|
|
return True
|
|
|
|
set_config('MOZ_APPLEMEDIA', applemedia)
|
|
set_define('MOZ_APPLEMEDIA', applemedia)
|
|
add_old_configure_assignment('MOZ_APPLEMEDIA', applemedia)
|
|
|
|
# Windows Media Foundation support
|
|
# ==============================================================
|
|
option('--disable-wmf',
|
|
help='Disable support for Windows Media Foundation')
|
|
|
|
@depends('--disable-wmf', target)
|
|
def wmf(value, target):
|
|
enabled = bool(value)
|
|
if value.origin == 'default':
|
|
# Enable Windows Media Foundation support by default.
|
|
# Note our minimum SDK version is Windows 7 SDK, so we are (currently)
|
|
# guaranteed to have a recent-enough SDK to build WMF.
|
|
enabled = target.os == 'WINNT'
|
|
if enabled and target.os != 'WINNT':
|
|
die('Cannot enable Windows Media Foundation support on %s', target.os)
|
|
if enabled:
|
|
return True
|
|
|
|
set_config('MOZ_WMF', wmf)
|
|
set_define('MOZ_WMF', wmf)
|
|
|
|
# FFmpeg H264/AAC Decoding Support
|
|
# ==============================================================
|
|
option('--disable-ffmpeg',
|
|
help='Disable FFmpeg for fragmented H264/AAC decoding')
|
|
|
|
@depends('--disable-ffmpeg', target)
|
|
def ffmpeg(value, target):
|
|
enabled = bool(value)
|
|
if value.origin == 'default':
|
|
enabled = target.os not in ('WINNT')
|
|
if enabled:
|
|
return True
|
|
|
|
set_config('MOZ_FFMPEG', ffmpeg)
|
|
set_define('MOZ_FFMPEG', ffmpeg)
|
|
imply_option('--enable-fmp4', ffmpeg, '--enable-ffmpeg')
|
|
|
|
# Built-in fragmented MP4 support.
|
|
# ==============================================================
|
|
option('--disable-fmp4', env='MOZ_FMP4',
|
|
help='Disable support for in built Fragmented MP4 parsing')
|
|
|
|
@depends('--disable-fmp4', target, wmf, applemedia)
|
|
def fmp4(value, target, wmf, applemedia):
|
|
enabled = bool(value)
|
|
if value.origin == 'default':
|
|
enabled = wmf or applemedia
|
|
if enabled:
|
|
return True
|
|
|
|
set_config('MOZ_FMP4', fmp4)
|
|
set_define('MOZ_FMP4', fmp4)
|
|
add_old_configure_assignment('MOZ_FMP4', fmp4)
|
|
|
|
# Miscellaneous
|
|
# ==============================================================
|
|
option(name='--enable-chrome-format',
|
|
help='Select FORMAT of chrome files during packaging.',
|
|
nargs=1,
|
|
choices=('omni', 'jar', 'flat'),
|
|
default='omni')
|
|
|
|
@depends('--enable-chrome-format')
|
|
def packager_format(value):
|
|
return value[0]
|
|
|
|
set_config('MOZ_PACKAGER_FORMAT', packager_format)
|
|
|
|
@depends(host, build_project)
|
|
def jar_maker_format(host, build_project):
|
|
# Multilocales for mobile/android use the same mergedirs for all locales,
|
|
# so we can't use symlinks for those builds.
|
|
if host.os == 'WINNT':
|
|
return 'flat'
|
|
return 'symlink'
|
|
|
|
set_config('MOZ_JAR_MAKER_FILE_FORMAT', jar_maker_format)
|
|
|
|
@depends(toolkit)
|
|
def omnijar_name(toolkit):
|
|
return 'omni.ja'
|
|
|
|
set_config('OMNIJAR_NAME', omnijar_name)
|
|
|
|
# Permissions system
|
|
# ==============================================================
|
|
option(name='--disable-permissions',
|
|
help='Disable permissions (popup and cookie blocking)')
|
|
|
|
moz_permissions = depends_if('--disable-permissions')(lambda _: True)
|
|
|
|
set_config('MOZ_PERMISSIONS', moz_permissions)
|
|
set_define('MOZ_PERMISSIONS', moz_permissions)
|
|
|
|
# gpsd support
|
|
# ==============================================================
|
|
option('--enable-gpsd', env='MOZ_GPSD',
|
|
help='Enable gpsd support')
|
|
|
|
@depends('--enable-gpsd')
|
|
def gpsd(value):
|
|
return bool(value)
|
|
|
|
system_gpsd = pkg_check_modules('MOZ_GPSD', 'libgps >= 3.11',
|
|
when=gpsd)
|
|
|
|
set_config('MOZ_GPSD', depends_if(system_gpsd)(lambda _: True))
|
|
|
|
# Miscellaneous programs
|
|
# ==============================================================
|
|
|
|
check_prog('TAR', ('gnutar', 'gtar', 'tar'))
|
|
check_prog('UNZIP', ('unzip',))
|
|
check_prog('ZIP', ('zip',))
|
|
|
|
# Key files
|
|
# ==============================================================
|
|
include('../build/moz.configure/keyfiles.configure')
|
|
|
|
simple_keyfile('Mozilla API')
|
|
|
|
simple_keyfile('Google API')
|
|
|
|
id_and_secret_keyfile('Bing API')
|
|
|
|
simple_keyfile('Adjust SDK')
|
|
|
|
# Servo integration
|
|
# ==============================================================
|
|
option('--enable-stylo', env='STYLO_ENABLED', nargs=0,
|
|
help='Enables experimental integration with the servo style system. '
|
|
'This requires either building servo within Gecko\'s cargo phase '
|
|
'or passing --with-servo')
|
|
|
|
@depends('--enable-stylo')
|
|
def stylo(value):
|
|
if value:
|
|
return True
|
|
|
|
set_define('MOZ_STYLO', stylo)
|
|
imply_option('--enable-jemalloc', depends_if('--enable-stylo')(lambda _: 'moz'))
|
|
|
|
option('--with-servo', env='SERVO_TARGET_DIR', nargs=1,
|
|
help='Absolute path of the target directory where libgeckoservo can '
|
|
'be found. This is generally servo_src_dir/target/release.')
|
|
|
|
@depends_if('--with-servo')
|
|
def servo_target_dir(value):
|
|
return value[0]
|
|
|
|
set_config('SERVO_TARGET_DIR', servo_target_dir)
|
|
|
|
# Gecko integrated IPC fuzzer
|
|
# ==============================================================
|
|
option('--enable-ipc-fuzzer', env='MOZ_FAULTY',
|
|
help='Enable IPC fuzzer')
|
|
|
|
@depends('--enable-ipc-fuzzer', target)
|
|
def ipc_fuzzer(value, target):
|
|
if value:
|
|
if target.os == 'WINNT':
|
|
die('--enable-ipc-fuzzer is not supported on this platform.')
|
|
return bool(value)
|
|
|
|
set_config('MOZ_FAULTY', ipc_fuzzer)
|
|
set_define('MOZ_FAULTY', ipc_fuzzer)
|
|
|
|
# Printing
|
|
# ==============================================================
|
|
@depends(target)
|
|
def ios_disable_printing(target):
|
|
if target.os == 'iOS':
|
|
return False
|
|
|
|
imply_option('--enable-printing', ios_disable_printing, reason='--target')
|
|
|
|
option('--disable-printing', help='Disable printing support')
|
|
|
|
@depends('--disable-printing')
|
|
def printing(value):
|
|
if value:
|
|
return True
|
|
|
|
set_config('NS_PRINTING', printing)
|
|
set_define('NS_PRINTING', printing)
|
|
set_define('NS_PRINT_PREVIEW', printing)
|
|
|
|
# Speech-dispatcher support
|
|
# ==============================================================
|
|
@depends(toolkit)
|
|
def no_speechd_on_non_gtk(toolkit):
|
|
if toolkit not in ('gtk2', 'gtk3'):
|
|
return False
|
|
|
|
imply_option('--enable-synth-speechd', no_speechd_on_non_gtk,
|
|
reason='--enable-default-toolkit')
|
|
|
|
option('--disable-synth-speechd', help='Disable speech-dispatcher support')
|
|
|
|
set_config('MOZ_SYNTH_SPEECHD',
|
|
depends_if('--disable-synth-speechd')(lambda _: True))
|
|
|
|
# Speech API
|
|
# ==============================================================
|
|
option('--disable-webspeech', help='Disable support for HTML Speech synthesis API')
|
|
|
|
@depends('--disable-webspeech', '--help')
|
|
def webspeech(value, _):
|
|
if value:
|
|
return True
|
|
|
|
set_config('MOZ_WEBSPEECH', webspeech)
|
|
set_define('MOZ_WEBSPEECH', webspeech)
|
|
add_old_configure_assignment('MOZ_WEBSPEECH', webspeech)
|
|
|
|
# Enable IPDL's "expensive" unit tests
|
|
# ==============================================================
|
|
option('--enable-ipdl-tests', help='Enable expensive IPDL tests')
|
|
|
|
set_config('MOZ_IPDL_TESTS',
|
|
depends_if('--enable-ipdl-tests')(lambda _: True))
|
|
|
|
# Network protocol support
|
|
# ==============================================================
|
|
@depends(check_build_environment, '--help')
|
|
@imports('os')
|
|
@imports(_from='__builtin__', _import='sorted')
|
|
def all_necko_protocols(build_env, _):
|
|
basedir = os.path.join(build_env.topsrcdir, 'netwerk', 'protocol')
|
|
return tuple(sorted(p for p in os.listdir(basedir)
|
|
if os.path.isdir(os.path.join(basedir, p))))
|
|
|
|
default_necko_protocols = all_necko_protocols
|
|
|
|
@deprecated_option('--enable-necko-protocols', nargs='*')
|
|
def necko_protocols(protocols):
|
|
return protocols
|
|
|
|
@depends(necko_protocols, default_necko_protocols)
|
|
def necko_protocols(protocols, default_protocols):
|
|
if protocols is None or (protocols and len(protocols) == 0):
|
|
return None
|
|
if len(protocols) == 1 and protocols[0] == '':
|
|
return False
|
|
result = set()
|
|
for p in protocols:
|
|
if p in ('yes', 'all', 'default'):
|
|
result |= set(default_protocols)
|
|
continue
|
|
if p in ('no', 'none'):
|
|
result = set()
|
|
continue
|
|
if p.startswith('-'):
|
|
if p[1:] in result:
|
|
result.remove(p[1:])
|
|
else:
|
|
result.add(p)
|
|
if result != set(default_protocols):
|
|
return tuple(result)
|
|
|
|
imply_option('--enable-network-protocols', necko_protocols,
|
|
reason='--enable-necko-protocols')
|
|
|
|
option('--enable-network-protocols', nargs='+', default=default_necko_protocols,
|
|
choices=all_necko_protocols,
|
|
help='Enable/disable specific protocol handlers')
|
|
|
|
@depends('--enable-network-protocols')
|
|
def necko_protocol_defines(protocols):
|
|
return tuple('NECKO_PROTOCOL_%s' % p for p in protocols)
|
|
|
|
add_old_configure_assignment('_NON_GLOBAL_ACDEFINES', necko_protocol_defines)
|
|
|
|
@depends(necko_protocol_defines)
|
|
@imports('__sandbox__')
|
|
def set_necko_protocol_defines(protocols):
|
|
for p in protocols:
|
|
__sandbox__.set_define_impl(p, True)
|
|
|
|
@depends('--enable-network-protocols')
|
|
@imports(_from='__builtin__', _import='sorted')
|
|
def necko_protocols(protocols):
|
|
return tuple(sorted(protocols))
|
|
|
|
set_config('NECKO_PROTOCOLS', necko_protocols)
|
|
add_old_configure_assignment('NECKO_PROTOCOLS', necko_protocols)
|
|
|
|
# Graphics
|
|
# ==============================================================
|
|
option('--disable-skia', help='Disable use of Skia')
|
|
|
|
@depends('--disable-skia', target)
|
|
def skia(value, target):
|
|
if value.origin == 'default' and target.endianness == 'big':
|
|
return None
|
|
if value:
|
|
return True
|
|
|
|
set_config('MOZ_ENABLE_SKIA', skia)
|
|
set_define('MOZ_ENABLE_SKIA', skia)
|
|
set_define('USE_SKIA', skia)
|
|
|
|
option('--disable-skia-gpu', help='Disable use of Skia-GPU')
|
|
|
|
@depends('--disable-skia-gpu', skia, target)
|
|
def skia_gpu(value, skia, target):
|
|
if value.origin == 'default':
|
|
if not skia:
|
|
return None
|
|
# Skia GPU support may not reliably build on certain *BSDs (see bug 1234494)
|
|
if target.os in ('NetBSD', 'OpenBSD'):
|
|
return None
|
|
elif value and not skia:
|
|
die('Cannot enable Skia-GPU without enabling Skia')
|
|
if skia and value:
|
|
return True
|
|
|
|
set_config('MOZ_ENABLE_SKIA_GPU', skia_gpu)
|
|
set_define('USE_SKIA_GPU', skia_gpu)
|
|
|
|
option('--enable-skia-pdf', help='Enable Skia PDF')
|
|
|
|
@depends('--enable-skia-pdf', skia, target)
|
|
def skia_pdf(value, skia, target):
|
|
if value.origin == 'default':
|
|
if not skia:
|
|
return None
|
|
elif value and not skia:
|
|
die('Cannot enable Skia PDF without enabling Skia')
|
|
if skia and value:
|
|
return True
|
|
|
|
set_config('MOZ_ENABLE_SKIA_PDF', skia_pdf)
|
|
set_define('MOZ_ENABLE_SKIA_PDF', skia_pdf)
|
|
|
|
@depends(skia, skia_gpu)
|
|
def skia_includes(skia, skia_gpu):
|
|
includes = []
|
|
if skia:
|
|
includes += [
|
|
'/gfx/skia',
|
|
'/gfx/skia/skia/include/config',
|
|
'/gfx/skia/skia/include/core',
|
|
]
|
|
|
|
if skia_gpu:
|
|
includes += [
|
|
'/gfx/skia/skia/include/gpu',
|
|
'/gfx/skia/skia/include/utils',
|
|
]
|
|
|
|
return includes
|
|
|
|
set_config('SKIA_INCLUDES', skia_includes)
|