config/moz.build
author Alastor Wu <alwu@mozilla.com>
Wed, 16 Jan 2019 01:04:40 +0000
changeset 514132 1d2fcf021b32addc028800b6f0b315c7c4779b3d
parent 507828 5e6dae0c1e5a4939ccd406f14607f7fafffd45a7
child 520086 51c3380d5b9456e9307f35ff09678634a7d0ee7b
permissions -rw-r--r--
Bug 1520088 - part2 : ensure logging result can always be executed. r=cpearce Ensure we can always see the debug log for the autoplay result. Differential Revision: https://phabricator.services.mozilla.com/D16524

# -*- 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('**'):
    BUG_COMPONENT = ('Firefox Build System', 'General')

with Files('mozunit/**'):
    BUG_COMPONENT = ('Testing', 'Python Test')

DIST_INSTALL = False
# For sanity's sake, we compile nsinstall without the wrapped system
# headers, so that we can use it to set up the wrapped system headers.
NoVisibilityFlags()

CONFIGURE_SUBST_FILES += [
    'tests/src-simple/Makefile',
]

if CONFIG['HOST_OS_ARCH'] != 'WINNT':
    HOST_SOURCES += [
        'nsinstall.c',
        'pathsub.c',
    ]
    HostProgram('nsinstall_real')

PYTHON_UNITTEST_MANIFESTS += [
    'tests/python.ini',
]

if CONFIG['CC_TYPE'] in ('clang', 'gcc') and CONFIG['MOZ_OPTIMIZE']:
    CFLAGS += ['-O3']

HOST_DEFINES = {
    'UNICODE': True,
    '_UNICODE': True,
}

include('stl-headers.mozbuild')
if CONFIG['WRAP_STL_INCLUDES']:
    stl_compiler = None
    if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
        stl_compiler = 'gcc'
    elif CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
        stl_compiler = 'msvc'

    if stl_compiler:
        # Note that the 'stl_wrappers' folder is known to the build system as
        # containing generated files; if this is changed here then the code in
        # GeneratedFile.__init__ in python/mozbuild/mozbuild/frontend/data.py
        # might need to be updated accordingly as well.
        template_file = SRCDIR + '/%s-stl-wrapper.template.h' % stl_compiler
        output_dir = '../dist/stl_wrappers'
        # We have to use a sentinel file as the first file because the
        # file_generate action will create it for us, but we want to create all
        # the files in gen_wrappers()
        outputs = tuple(['stl.sentinel'] + ['%s/%s' % (output_dir, h) for h in stl_headers])
        GENERATED_FILES += [outputs]
        stl = GENERATED_FILES[outputs]
        stl.script = 'make-stl-wrappers.py:gen_wrappers'
        stl.flags = [output_dir, stl_compiler, template_file]
        stl.flags.extend(stl_headers)

    # Wrap <windows.h> to make it easier to use correctly
    # NOTE: If we aren't wrapping STL includes, we're building part of the browser
    # which won't need this wrapper, such as L10N. Just don't try to generate the
    # wrapper in that case.
    if CONFIG['OS_ARCH'] == 'WINNT':
        GENERATED_FILES += ['../dist/stl_wrappers/windows.h']
        windows_h = GENERATED_FILES['../dist/stl_wrappers/windows.h']
        windows_h.script = 'make-windows-h-wrapper.py:generate'
        windows_h.inputs = ['windows-h-constant.decls.h',
                            'windows-h-unicode.decls.h',
                            'windows-h-wrapper.template.h']
        windows_h.flags = [stl_compiler]

if CONFIG['WRAP_SYSTEM_INCLUDES']:
    include('system-headers.mozbuild')
    output_dir = '../dist/system_wrappers'
    outputs = tuple(['system-header.sentinel'] + ['%s/%s' % (output_dir, h) for h in stl_headers + system_headers])
    GENERATED_FILES += [outputs]
    system = GENERATED_FILES[outputs]
    system.script = 'make-system-wrappers.py:gen_wrappers'
    system.flags = [output_dir]
    system.flags.extend(stl_headers)
    system.flags.extend(system_headers)