moz.build
author Mike Hommey <mh+mozilla@glandium.org>
Thu, 03 Jul 2014 07:15:31 +0900
changeset 192038 ce1c57e03b885eedfbe58a191e5306b17b04fc65
parent 189293 5a29f18ca2a0486022aaf5f9cd5460279a749c3d
child 194529 63c52b7ddc282ca2b334eb51c8ec32702c60d5d1
permissions -rw-r--r--
Bug 762358 - Re-run configure when mozconfig changed in a significant way. r=gps This adds a format option to mach environment and uses it in client.mk to create a .mozconfig.json in the objdir, containing all the relevant data from mozconfig. If the mozconfig doesn't change in a way that alters that data, we still skip configure. At the same time, use mach environment in place of mozconfig2configure and mozconfig2client-mk, which makes us now have only one mozconfig reader. Also, in the mozconfig reader, keep track of environment variables (as opposed to shell variables), so that changes such as a variable that was exported not being exported anymore is spotted. At the opposite, in order for irrelevant environment variable changes not to incur in re-running configure, only a set of environment variables are stored when they are unmodified. Otherwise, changes such as using a different terminal window, or even rebooting, would trigger reconfigures. Finally, make mach environment emit both MOZ_OBJDIR and OBJDIR for client.mk, and cleanup some objdir-related things in client.mk.. At the same time, make the mozconfig reader take MOZ_OBJDIR from the environment if it is defined there and not in the mozconfig.

# -*- Mode: python; c-basic-offset: 4; 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/.

CONFIGURE_SUBST_FILES += [
    'config/autoconf.mk',
    'config/emptyvars.mk',
]

if CONFIG['ENABLE_CLANG_PLUGIN']:
    add_tier_dir('base', 'build/clang-plugin', external=True)

add_tier_dir('base', ['config', 'python'])
if not CONFIG['JS_STANDALONE']:
    CONFIGURE_SUBST_FILES += [
        'mozilla-config.h',
        'tools/update-packaging/Makefile',
    ]

    add_tier_dir('base', ['build', 'probes'])

if not CONFIG['LIBXUL_SDK']:
    add_tier_dir('base', ['mfbt'])

    if not CONFIG['JS_STANDALONE']:
        if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
            add_tier_dir('base', ['other-licenses/android'])

        if CONFIG['MOZ_MEMORY']:
            add_tier_dir('base', ['memory'])

        if not CONFIG['MOZ_NATIVE_ZLIB']:
            add_tier_dir('base', ['modules/zlib'])

        add_tier_dir('base', ['mozglue', 'memory/mozalloc'])

if not CONFIG['JS_STANDALONE']:
    add_tier_dir('precompile', 'xpcom/xpidl')

    if CONFIG['COMPILE_ENVIRONMENT'] and not CONFIG['LIBXUL_SDK']:
        if not CONFIG['MOZ_NATIVE_NSPR']:
            add_tier_dir('nspr', 'config/nspr')

        add_tier_dir('external', 'config/external')

        if not CONFIG['MOZ_NATIVE_NSS']:
             add_tier_dir('nss', 'security/build')

if CONFIG['COMPILE_ENVIRONMENT'] and not CONFIG['LIBXUL_SDK']:
    if CONFIG['BUILD_CTYPES'] and not CONFIG['MOZ_NATIVE_FFI']:
        add_tier_dir('js', ['js/src/ctypes/libffi'], static=True)
    add_tier_dir('js', ['intl/icu'], static=True)
    CONFIGURE_SUBST_FILES += ['intl/icu/Makefile']
    add_tier_dir('js', ['js/src'])

if not CONFIG['JS_STANDALONE']:
    # Bring in the configuration for the configured application.
    include('/' + CONFIG['MOZ_BUILD_APP'] + '/app.mozbuild')