gecko-dev/mozglue/build/moz.build
Mike Hommey 2abcc3d7cb Bug 1553363 - Generalize the *_impl goop for allocation functions in mozglue. r=froydnj
The current situation is suboptimal, where we have the same goop
repeated in multiple files, and where things kinda sorta work out fine
thanks to the linker for files that would have been forbidden, except
when the linker doesn't do its job, which apparently happen on
mingwclang builds.

This change only really covers C++ code using operator new/delete, and
not things that would be using malloc/free, because it's easier.
malloc/free is left for a followup.

Differential Revision: https://phabricator.services.mozilla.com/D32119

--HG--
extra : moz-landing-system : lando
2019-05-29 22:49:42 +00:00

130 lines
3.3 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/.
# Build mozglue as a shared lib on Windows, OSX and Android. But not for
# embedders!
# If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
if CONFIG['JS_STANDALONE'] and not CONFIG['MOZ_MEMORY']:
Library('mozglue')
elif CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
SharedLibrary('mozglue')
else:
Library('mozglue')
if CONFIG['OS_TARGET'] == 'Android':
LDFLAGS += ['-Wl,--version-script,%s/mozglue.ver' % SRCDIR]
SOURCES += [
'BionicGlue.cpp',
]
if CONFIG['MOZ_ASAN']:
SOURCES += [
'AsanOptions.cpp',
]
if CONFIG['MOZ_UBSAN']:
SOURCES += [
'UbsanOptions.cpp',
]
if CONFIG['OS_TARGET'] == 'WINNT':
DEFFILE = '!mozglue.def'
# We'll break the DLL blocklist if we immediately load user32.dll
DELAYLOAD_DLLS += [
'user32.dll',
]
RCINCLUDE = 'mozglue.rc'
if CONFIG['MOZ_WIDGET_TOOLKIT']:
if CONFIG['MOZ_MEMORY'] and FORCE_SHARED_LIB:
pass
# TODO: SHARED_LIBRARY_LIBS go here
else:
# Temporary, until bug 662814 lands
NoVisibilityFlags()
SOURCES += [
'dummy.cpp',
]
if CONFIG['OS_TARGET'] == 'WINNT':
LOCAL_INCLUDES += [
'/memory/build',
]
SOURCES += [
'Authenticode.cpp',
'UntrustedDllsHandler.cpp',
'WindowsDllBlocklist.cpp',
]
OS_LIBS += [
'crypt32',
'version',
'wintrust',
]
DELAYLOAD_DLLS += [
'crypt32.dll',
'wintrust.dll',
]
EXPORTS.mozilla += [
'Authenticode.h',
'WindowsDllBlocklistCommon.h',
'WindowsDllBlocklistDefs.h',
]
EXPORTS.mozilla.glue += [
'WindowsDllServices.h',
]
EXPORTS.mozilla += [
'arm.h',
'mips.h',
'SSE.h',
'WindowsDllBlocklist.h',
]
if CONFIG['CPU_ARCH'].startswith('x86'):
SOURCES += [
'SSE.cpp',
]
if CONFIG['CPU_ARCH'] == 'arm':
SOURCES += [
'arm.cpp',
]
if CONFIG['CPU_ARCH'].startswith('mips'):
SOURCES += [
'mips.cpp',
]
if CONFIG['MOZ_LINKER']:
USE_LIBS += [
'zlib',
]
USE_LIBS += [
'mfbt',
]
LIBRARY_DEFINES['IMPL_MFBT'] = True
LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True
if CONFIG['OS_TARGET'] == 'Darwin':
# On OSX 10.10.3, a dead lock happens in some cases involving dynamic
# symbol resolution for symbols that jemalloc itself uses. While it
# might be possible to find a way to avoid all such symbol resolutions,
# it's currently not possible because at the very least there's a call
# to pthread_self from tsd_init_check_recursion, which is necessary
# because somehow clang doesn't want to accept the __thread keyword
# for TLS.
LDFLAGS += ['-Wl,-bind_at_load']
if CONFIG['MOZ_LINKER'] and CONFIG['CPU_ARCH'] == 'arm':
LDFLAGS += ['-Wl,-version-script,%s/arm-eabi-filter' % SRCDIR]
DIST_INSTALL = True