build/templates.mozbuild
author Emilio Cobos Álvarez <emilio@crisal.io>
Sun, 17 Dec 2017 22:29:10 +0100
changeset 396857 13faabcf8e965cca857e3cc8fdbea289a09c7ea0
parent 395929 d7fcb5272323838f125aea773258eb3fab187510
child 417041 619efecc323332781743562873290a894ee6bd29
permissions -rw-r--r--
Bug 1425769: Base class for ShadowRoot and Document to manage style state. r=smaug This also removes some confusing comments around nsIDocument regarding some kind of "special" stylesheets, which don't seem to exist anymore, and consolidates StyleSheetList so that we only have one implementation. I think that fixes a potential leak on the shadow root code (even though the API is v0 only), given the pointer from the ShadowRootStyleSheetList to the ShadowRoot wasn't being CCd. Also, more stuff could be renamed, methods removed, etc, feel free to suggest more cleanup, I've done mostly the minimal. Next steps are moving the stylesets there and stop using the proto binding sheet list / resources. MozReview-Commit-ID: D9hnDgPQAS5

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

@template
def Binary():
    '''Generic template for target binaries. Meant to be used by other
    templates.'''

    # Add -llog by default, since we use it all over the place.
    if CONFIG['OS_TARGET'] == 'Android':
        OS_LIBS += ['log']


@template
def Program(name):
    '''Template for program executables.'''
    PROGRAM = name

    Binary()


@template
def SimplePrograms(names, ext='.cpp'):
    '''Template for simple program executables.

    Those have a single source with the same base name as the executable.
    '''
    SIMPLE_PROGRAMS += names
    SOURCES += ['%s%s' % (name, ext) for name in names]

    Binary()


@template
def CppUnitTests(names, ext='.cpp'):
    '''Template for C++ unit tests.

    Those have a single source with the same base name as the executable.
    '''
    COMPILE_FLAGS['EXTRA_INCLUDES'] = ['-I%s/dist/include' % TOPOBJDIR,
                                       '-I%s/dist/include/testing' % TOPOBJDIR]
    CPP_UNIT_TESTS += names
    SOURCES += ['%s%s' % (name, ext) for name in names]

    Binary()


@template
def Library(name):
    '''Template for libraries.'''
    LIBRARY_NAME = name


@template
def RustLibrary(name, features=None, target_dir=None):
    '''Template for Rust libraries.'''
    Library(name)

    IS_RUST_LIBRARY = True

    if features:
        RUST_LIBRARY_FEATURES = features

    if target_dir:
        RUST_LIBRARY_TARGET_DIR = target_dir


@template
def SharedLibrary(name):
    '''Template for shared libraries.'''
    Library(name)

    FORCE_SHARED_LIB = True

    Binary()


@template
def Framework(name):
    '''Template for OSX Frameworks.'''
    SharedLibrary(name)

    IS_FRAMEWORK = True


@template
def HostProgram(name):
    '''Template for build tools executables.'''
    HOST_PROGRAM = name


@template
def HostSimplePrograms(names, ext='.cpp'):
    '''Template for simple build tools executables.

    Those have a single source with the same base name as the executable.
    '''
    HOST_SIMPLE_PROGRAMS += names
    HOST_SOURCES += ['%s%s' % (name.replace('host_', ''), ext)
        for name in names]


@template
def HostLibrary(name):
    '''Template for build tools libraries.'''
    HOST_LIBRARY_NAME = name

@template
def HostRustLibrary(name, features=None):
    '''Template for host Rust libraries.'''
    HostLibrary(name)

    IS_RUST_LIBRARY = True

    if features:
        HOST_RUST_LIBRARY_FEATURES = features

@template
def DisableStlWrapping():
    COMPILE_FLAGS['STL'] = []

@template
def NoVisibilityFlags():
    COMPILE_FLAGS['VISIBILITY'] = []

@template
def AllowCompilerWarnings():
    COMPILE_FLAGS['WARNINGS_AS_ERRORS'] = []

@template
def RustTest(name, features=None):
    RUST_TEST = name

    if features:
        RUST_TEST_FEATURES = features

include('gecko_templates.mozbuild')
include('test_templates.mozbuild')