moz.build
author Kartikaya Gupta <kgupta@mozilla.com>
Wed, 30 May 2018 15:54:50 -0400
changeset 420571 8a1bdb8d8bf5a1c8869bf3f82fd86c56f9f4b72c
parent 419614 f7c1d82b1c122c91cae34cf1440a52073021d68e
child 440425 1fead446e3b9c18764a813099b7e6d932ac7d918
permissions -rw-r--r--
Bug 1457590 - Strengthen the contract around recycling HitTestingTreeNodes. r=botond This patch makes three related changes: - A non-functional change that factors a IsRecyclable function on HitTestingTreeNode. - A non-functional change that sprinkles proof-of-tree-lock arguments to a few HitTestingTreeNode functions, to ensure at compile-time that they can only be called while holding the tree lock. - A functional change that stops clearing mLayersId in HitTestingTreeNode::Destroy, so that if a node is non-recyclable, and it gets Destroy()'d while other code still has a RefPtr to it, that other code can still read the layers id off in a safe manner. These changes provide a stronger set of checks around node recycling, and allows for a safe mechanism to use a HitTestingTreeNode on the controller thread without having to lock the entire APZ tree. The mechanism is effectively a per-node lock, which will be added in the next patch. MozReview-Commit-ID: DBIjFDZJwhE

# -*- 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/.

with Files('AUTHORS'):
    BUG_COMPONENT = ('mozilla.org', 'Licensing')

with Files('LICENSE'):
    BUG_COMPONENT = ('mozilla.org', 'Licensing')

with Files('LEGAL'):
    BUG_COMPONENT = ('mozilla.org', 'Licensing')

with Files('aclocal.m4'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('Cargo.*'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('client.*'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('CLOBBER'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('*configure*'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('mach'):
    BUG_COMPONENT = ('Core', 'mach')

with Files('*moz*'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('GNUmakefile'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('Pipfile*'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('*gradle*'):
    BUG_COMPONENT = ('Firefox for Android', 'Build Config & IDE Support')
    SCHEDULES.exclusive = ['android']

with Files('*.json'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('**/l10n.toml'):
    BUG_COMPONENT = ('Core', 'Localization')
    FINAL = True

with Files('README.txt'):
    BUG_COMPONENT = ('Core', 'General')

with Files("nsprpub/**"):
    BUG_COMPONENT = ("NSPR", "NSPR")

with Files('**/Makefile.in'):
    BUG_COMPONENT = ('Firefox Build System', 'General')
    FINAL = True

with Files("**/*.js"):
    SCHEDULES.inclusive += ['test-verify', 'test-verify-gpu', 'docs']

with Files("**/*.jsm"):
    SCHEDULES.inclusive += ['docs']

with Files("**/*.rst"):
    SCHEDULES.inclusive += ['docs']

with Files("**/*.md"):
    SCHEDULES.inclusive += ['docs']

with Files("**/*.html"):
    SCHEDULES.inclusive += ['test-verify', 'test-verify-gpu']

with Files("**/*.xhtml"):
    SCHEDULES.inclusive += ['test-verify', 'test-verify-gpu']

with Files("**/*.xul"):
    SCHEDULES.inclusive += ['test-verify', 'test-verify-gpu']

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

if CONFIG['ENABLE_CLANG_PLUGIN']:
    DIRS += ['build/clang-plugin']

DIRS += [
    'config',
    'python',
    'taskcluster',
    'testing/mozbase',
    'third_party/python',
]

if not CONFIG['JS_STANDALONE'] or not CONFIG['MOZ_BUILD_APP']:
    CONFIGURE_DEFINE_FILES += [
        'mozilla-config.h',
    ]
    EXPORTS += [
        '!buildid.h',
        '!mozilla-config.h',
        '!source-repo.h',
    ]

    GENERATED_FILES += [
        'buildid.h',
        'source-repo.h',
    ]

    GENERATED_FILES['buildid.h'].script = 'build/variables.py:buildid_header'
    GENERATED_FILES['source-repo.h'].script = 'build/variables.py:source_repo_header'

    DIRS += [
        'build',
    ]

DIRS += [
    'mfbt',
]

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

CONFIGURE_SUBST_FILES += ['.cargo/config']

include('build/templates.mozbuild')