gecko-dev/build/gecko_templates.mozbuild
Mike Hommey abab5abf88 Bug 1423803 - Turn mozilla::fallible into an alias for std::nothrow. r=njn
The std::nothrow variant of operator new is effectively a fallible
operator new. It is used in third party code.

The duplication with our own fallible operator new is unfortunate, and
we can reduce it by making one an alias of the other.

We keep the fallible library as a dummy on Android because bug 1423802
induces some linking problems.

--HG--
extra : rebase_source : d7b915aaafde40057e87b7ad4bbd82d348e4f12d
2017-12-07 11:32:29 +09:00

132 lines
3.9 KiB
Python

# -*- 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 GeckoBinary(linkage='dependent', mozglue=None):
'''Template for Gecko-related binaries.
This template is meant to be used in other templates.
`linkage` indicates the wanted xpcom linkage type. Valid values are
'dependent', 'standalone' or None. 'dependent' is the default. It is
used for e.g. XPCOM components and executables with direct dependencies
on libxul. Most executables should use the 'standalone' linkage, which
uses the standalone XPCOM glue to load libxul. None means no XPCOM glue
or libxul linkage at all.
`mozglue` indicates whether to link against the mozglue library, and if
so, what linkage to apply. Valid values are None (mozglue not linked),
'program' (mozglue linked to an executable program), or 'library' (mozglue
linked to a shared library).
'''
if linkage == 'dependent':
USE_LIBS += [
'nspr',
'xul',
]
elif linkage == 'standalone':
DEFINES['XPCOM_GLUE'] = True
USE_LIBS += [
'xpcomglue',
]
elif linkage != None:
error('`linkage` must be "dependent", "standalone" or None')
if mozglue:
LDFLAGS += CONFIG['MOZ_GLUE_WRAP_LDFLAGS']
if mozglue == 'program':
USE_LIBS += ['mozglue']
DEFINES['MOZ_HAS_MOZGLUE'] = True
if CONFIG['MOZ_GLUE_IN_PROGRAM'] and CONFIG['GNU_CC']:
LDFLAGS += ['-rdynamic']
elif mozglue == 'library':
LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True
if not CONFIG['MOZ_GLUE_IN_PROGRAM']:
USE_LIBS += ['mozglue']
else:
error('`mozglue` must be "program" or "library"')
if CONFIG['MOZ_WIDGET_TOOLKIT'] and CONFIG['OS_TARGET'] == 'Android':
# Keep a dummy library until bug 1423802 is fixed.
USE_LIBS += [
'fallible',
]
@template
def GeckoProgram(name, linkage='standalone', **kwargs):
'''Template for program executables related to Gecko.
`name` identifies the executable base name.
See the documentation for `GeckoBinary` for other possible arguments,
with the notable difference that the default for `linkage` is 'standalone'.
'''
Program(name)
kwargs.setdefault('mozglue', 'program')
GeckoBinary(linkage=linkage, **kwargs)
@template
def GeckoSimplePrograms(names, **kwargs):
'''Template for simple program executables related to Gecko.
`names` identifies the executable base names for each executable.
See the documentation for `GeckoBinary` for other possible arguments.
'''
SimplePrograms(names)
kwargs.setdefault('mozglue', 'program')
GeckoBinary(**kwargs)
@template
def GeckoCppUnitTests(names, **kwargs):
'''Template for C++ unit tests related to Gecko.
`names` identifies the executable base names for each executable.
See the documentation for `GeckoBinary` for other possible arguments.
'''
CppUnitTests(names)
kwargs.setdefault('mozglue', 'program')
GeckoBinary(**kwargs)
@template
def GeckoSharedLibrary(name, **kwargs):
'''Template for shared libraries related to Gecko.
`name` identifies the library base name.
See the documentation for `GeckoBinary` for other possible arguments.
'''
SharedLibrary(name)
kwargs.setdefault('mozglue', 'library')
GeckoBinary(**kwargs)
@template
def GeckoFramework(name, **kwargs):
'''Template for OSX frameworks related to Gecko.
`name` identifies the library base name.
See the documentation for `GeckoBinary` for other possible arguments.
'''
Framework(name)
kwargs.setdefault('mozglue', 'library')
GeckoBinary(**kwargs)