gecko/toolkit/toolkit.mozbuild
Gregory Szorc 5fd8b7d40f Bug 899792 - Establish precompile tier and move IPDL and WebIDL build rules; r=glandium
A new build tier is introduced: precompile. The intention is to replace
the export subtier with something better and nonrecursive. IPDL and
WebIDL code generation have been moved into this new tier and are
performed concurrently. This appears to reduce build times due to fewer
"single threaded" build actions.

The subtier tracking UI has been updated to reflect operations that can
occur in parallel. As subtiers are started, they turn yellow. They can
then complete in any order.

Nonrecursive targets have been added to preserve the IPDL and WebIDL
build targets such that developers can type |make| from leaf directories
like they have always done.
2013-07-30 17:00:24 -07:00

243 lines
6.6 KiB
Python

# 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/.
if CONFIG['LIBXUL_SDK']:
error('toolkit.mozbuild is not compatible with --enable-libxul-sdk=')
if not CONFIG['MOZ_NATIVE_NSPR']:
add_tier_dir('nspr', 'config/nspr')
add_tier_dir('precompile', 'config/makefiles/precompile')
if not CONFIG['MOZ_NATIVE_SQLITE']:
add_tier_dir('nss', 'db/sqlite3/src')
if not CONFIG['MOZ_NATIVE_NSS']:
add_tier_dir('nss', 'security/build')
include('/config/js/js.mozbuild')
if CONFIG['NS_TRACE_MALLOC']:
add_tier_dir('platform', 'tools/trace-malloc/lib')
if CONFIG['MOZ_DMD']:
add_tier_dir('platform', 'memory/replace/dmd')
if CONFIG['MOZ_TREE_FREETYPE']:
add_tier_dir('platform', 'modules/freetype2', static=True)
add_tier_dir('platform', 'xpcom')
add_tier_dir('platform', [
'modules/libpref',
'intl',
'netwerk',
])
if CONFIG['MOZ_AUTH_EXTENSION']:
add_tier_dir('platform', 'extensions/auth')
# External/3rd party libraries.
if not CONFIG['MOZ_NATIVE_JPEG']:
add_tier_dir('platform', 'media/libjpeg')
if CONFIG['MOZ_UPDATER']:
if not CONFIG['MOZ_NATIVE_BZ2']:
add_tier_dir('platform', 'modules/libbz2')
add_tier_dir('platform', 'other-licenses/bsdiff')
# Gecko/Core components.
add_tier_dir('platform', ['ipc', 'js/ipc'])
add_tier_dir('platform', ['hal', 'js/xpconnect', 'intl/chardet'])
add_tier_dir('platform', ['modules/libjar', 'storage'])
if CONFIG['MOZ_PERMISSIONS']:
add_tier_dir('platform', ['extensions/cookie', 'extensions/permissions'])
add_tier_dir('platform', 'rdf')
if CONFIG['MOZ_JSDEBUGGER']:
add_tier_dir('platform', 'js/jsd')
if CONFIG['MOZ_VORBIS']:
add_tier_dir('platform', 'media/libvorbis')
if CONFIG['MOZ_TREMOR']:
add_tier_dir('platform', 'media/libtremor')
if CONFIG['MOZ_OPUS']:
add_tier_dir('platform', 'media/libopus')
if CONFIG['MOZ_WEBM']:
add_tier_dir('platform', 'media/libnestegg')
if CONFIG['MOZ_VP8'] and not CONFIG['MOZ_NATIVE_LIBVPX']:
add_tier_dir('platform', 'media/libvpx')
if CONFIG['MOZ_OGG']:
add_tier_dir('platform', ['media/libogg', 'media/libtheora'])
if CONFIG['MOZ_WEBRTC']:
add_tier_dir('platform', [
'media/webrtc',
'media/mtransport/third_party',
'media/mtransport/build',
'media/mtransport/standalone',
])
if CONFIG['MOZ_SPEEX_RESAMPLER']:
add_tier_dir('platform', 'media/libspeex_resampler')
if CONFIG['MOZ_SOUNDTOUCH']:
add_tier_dir('platform', 'media/libsoundtouch')
if CONFIG['MOZ_CUBEB']:
add_tier_dir('platform', 'media/libcubeb')
if CONFIG['MOZ_OMX_PLUGIN']:
add_tier_dir('platform', [
'media/omx-plugin/lib/ics/libutils',
'media/omx-plugin/lib/ics/libstagefright',
'media/omx-plugin/lib/gb/libutils',
'media/omx-plugin/lib/gb/libstagefright',
'media/omx-plugin/lib/gb/libstagefright_color_conversion',
'media/omx-plugin/lib/gb235/libstagefright',
'media/omx-plugin/lib/froyo/libstagefright',
'media/omx-plugin',
'media/omx-plugin/gb',
'media/omx-plugin/gb235',
'media/omx-plugin/froyo',
'media/omx-plugin/lib/hc/libstagefright',
'media/omx-plugin/hc',
'media/omx-plugin/sony',
'media/omx-plugin/jb-htc',
])
if not CONFIG['MOZ_NATIVE_PNG']:
add_tier_dir('platform', 'media/libpng')
add_tier_dir('platform', 'media/kiss_fft')
if CONFIG['ENABLE_TESTS']:
add_tier_dir('platform', 'testing/specialpowers')
if CONFIG['ENABLE_TESTS']:
add_tier_dir('platform', 'testing/gtest')
add_tier_dir('platform', [
'uriloader',
'caps',
'parser',
'gfx',
'image',
'dom',
'view',
'widget',
'content',
'editor',
'layout',
'docshell',
'embedding',
'xpfe/appshell'
])
# This needs to be built after the gfx/ directory
# to ensure all dependencies for skia (e.g. mozalloc, xpcom)
# have been built
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
add_tier_dir('platform', 'other-licenses/skia-npapi')
if CONFIG['MOZ_UNIVERSALCHARDET']:
add_tier_dir('platform', 'extensions/universalchardet')
if CONFIG['ACCESSIBILITY']:
add_tier_dir('platform', 'accessible')
# toolkit
add_tier_dir('platform', 'profile')
# This must precede xpfe.
if CONFIG['MOZ_JPROF']:
add_tier_dir('platform', 'tools/jprof')
add_tier_dir('platform', 'tools/profiler')
add_tier_dir('platform', 'xpfe/components')
if CONFIG['MOZ_ENABLE_XREMOTE']:
add_tier_dir('platform', 'widget/xremoteclient')
if CONFIG['MOZ_SPELLCHECK']:
add_tier_dir('platform', 'extensions/spellcheck')
add_tier_dir('platform', 'security/manager')
if CONFIG['MOZ_UPDATER']:
add_tier_dir('platform', 'modules/libmar')
add_tier_dir('platform', 'toolkit')
if CONFIG['MOZ_PREF_EXTENSIONS']:
add_tier_dir('platform', 'extensions/pref')
add_tier_dir('platform', 'services')
add_tier_dir('platform', 'startupcache')
add_tier_dir('platform', 'js/ductwork/debugger')
add_tier_dir('platform', 'other-licenses/snappy')
if CONFIG['MOZ_GIO_COMPONENT']:
add_tier_dir('platform', 'extensions/gio')
# Applications can cheat and ask for code to be
# built before libxul so it can be linked into libxul.
add_tier_dir('platform', app_libxul_dirs)
add_tier_dir('platform', app_libxul_static_dirs, static=True)
add_tier_dir('platform', 'toolkit/library')
if CONFIG['MOZ_REPLACE_MALLOC']:
add_tier_dir('platform', 'memory/replace')
if CONFIG['NS_TRACE_MALLOC']:
add_tier_dir('platform', 'tools/trace-malloc')
if CONFIG['MOZ_ENABLE_GNOME_COMPONENT']:
add_tier_dir('platform', 'toolkit/system/gnome')
# if libconic or QtNetwork is present, it will do its own network monitoring
if not CONFIG['MOZ_ENABLE_LIBCONIC'] and not CONFIG['MOZ_ENABLE_QTNETWORK'] and CONFIG['MOZ_ENABLE_DBUS']:
add_tier_dir('platform', 'toolkit/system/dbus')
add_tier_dir('platform', 'addon-sdk')
if CONFIG['MOZ_MAPINFO']:
add_tier_dir('platform', 'tools/codesighs')
if CONFIG['ENABLE_MARIONETTE'] or CONFIG['MOZ_WIDGET_TOOLKIT'] not in ('gonk', 'android'):
add_tier_dir('platform', 'testing/marionette')
if CONFIG['ENABLE_TESTS']:
add_tier_dir('platform', [
'testing/mochitest',
'testing/xpcshell',
'testing/tools/screenshot',
'testing/peptest',
'testing/profiles',
'testing/mozbase',
'testing/modules',
])
if CONFIG['MOZ_WEBRTC'] and CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gonk':
add_tier_dir('platform', [
'media/webrtc/signaling/test',
'media/mtransport/test',
])