ipc/app/moz.build
author David Major <dmajor@mozilla.com>
Tue, 08 Sep 2015 15:07:45 -0400
changeset 261585 71d29e7967e5df599785de017a5f098f752845f8
parent 260092 c646a88160d7b65f755f4dcfa5dec8626a77bcd5
child 261899 6feccf342e7ca5120c7ae5b1ebfd8161709040b8
permissions -rw-r--r--
Bug 1188045: Don't delayload xul.dll or nss3.dll on clang-cl builds. r=glandium

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

# Any changes that affect Android need to be made in pie/moz.build as well.

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
    Program(CONFIG['MOZ_CHILD_PROCESS_NAME'])
    SOURCES += [
        'MozillaRuntimeMainAndroid.cpp',
    ]

    DIRS += ['pie']
else:
    kwargs = {
        'linkage': None,
    }
    if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_ARCH'] == 'WINNT':
        kwargs['msvcrt'] = 'static'
        if not CONFIG['GNU_CC']:
            USE_LIBS += [
                'mozalloc_staticruntime',
            ]
    GeckoProgram(CONFIG['MOZ_CHILD_PROCESS_NAME'], **kwargs)

    SOURCES += [
        'MozillaRuntimeMain.cpp',
    ]
    USE_LIBS += [
        'nspr',
        'xul',
    ]

include('/ipc/chromium/chromium-config.mozbuild')

LOCAL_INCLUDES += [
    '/toolkit/xre',
    '/xpcom/base',
]

# We link GMPLoader into plugin-container on desktop so that its code is
# covered by the desktop DRM vendor's voucher.
if CONFIG['OS_TARGET'] != 'Android':
    SOURCES += [
        '../../dom/media/gmp/GMPLoader.cpp',
    ]

if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_ARCH'] == 'WINNT':
    # For sandbox includes and the include dependencies those have
    LOCAL_INCLUDES += [
        '/security/sandbox/chromium',
        '/security/sandbox/chromium-shim',
    ]
    USE_LIBS += [
        'rlz',
        'sandbox_staticruntime_s',
    ]

    # clang-cl can't deal with this delay-load due to bug 1188045
    # (also filed as https://llvm.org/bugs/show_bug.cgi?id=24291)
    if not CONFIG['CLANG_CL']:
        DELAYLOAD_DLLS += [
            'nss3.dll',
            'xul.dll'
        ]

    DEFINES['HASH_NODE_ID_WITH_DEVICE_ID'] = 1;
    SOURCES += [
        'sha256.c',
    ]

if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_TARGET'] in ('Linux', 'Android'):
    USE_LIBS += [
        'mozsandbox',
    ]

    # gcc lto likes to put the top level asm in syscall.cc in a different partition
    # from the function using it which breaks the build.  Work around that by
    # forcing there to be only one partition.
    if '-flto' in CONFIG['OS_CXXFLAGS'] and not CONFIG['CLANG_CXX']:
        LDFLAGS += ['--param lto-partitions=1']

if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_TARGET'] == 'Darwin':
    USE_LIBS += [
        'mozsandbox',
    ]

if CONFIG['_MSC_VER']:
    # Always enter a Windows program through wmain, whether or not we're
    # a console application.
    WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup']

LDFLAGS += [CONFIG['MOZ_ALLOW_HEAP_EXECUTE_FLAGS']]

# Control the default heap size.
# This is the heap returned by GetProcessHeap().
# As we use the CRT heap, the default size is too large and wastes VM.
#
# The default heap size is 1MB on Win32.
# The heap will grow if need be.
#
# Set it to 256k.  See bug 127069.
if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']:
    LDFLAGS += ['/HEAP:0x40000']

# Windows builds have dll linkage warnings due to msvcrt static linkage
if CONFIG['OS_ARCH'] == 'WINNT':
    ALLOW_COMPILER_WARNINGS = True

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
    OS_LIBS += [
        'binder',
        'utils',
    ]