1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# 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.
# If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin'):
SharedLibrary('mozglue')
else:
Library('mozglue')
SDK_LIBRARY = True
if CONFIG['MOZ_ASAN']:
SOURCES += ['AsanOptions.cpp']
if CONFIG['OS_TARGET'] == 'WINNT':
DEFFILE = 'mozglue.def'
# We'll break the DLL blocklist if we immediately load user32.dll
# For the same reason, we delayload these other DLLs to avoid eager
# dependencies on user32.dll.
DELAYLOAD_DLLS += [
'dbghelp.dll',
'user32.dll',
'version.dll',
]
if not CONFIG['JS_STANDALONE']:
if CONFIG['MOZ_MEMORY'] and FORCE_SHARED_LIB:
pass
# TODO: SHARED_LIBRARY_LIBS go here
else:
# Temporary, until bug 662814 lands
NO_VISIBILITY_FLAGS = True
SOURCES += ['dummy.cpp']
if CONFIG['OS_TARGET'] == 'WINNT':
LOCAL_INCLUDES += ['/memory/build']
SOURCES += ['WindowsDllBlocklist.cpp']
DISABLE_STL_WRAPPING = True
OS_LIBS += ['version']
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']
DEFINES['IMPL_MFBT'] = True
LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True
LDFLAGS += CONFIG['MOZ_GLUE_WRAP_LDFLAGS']
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']
DIST_INSTALL = True
|