forked from mongodb/mongo
/
SConscript
60 lines (50 loc) · 1.69 KB
/
SConscript
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
# -*- mode: python -*-
Import("env")
files = [
'src/base/dynamic_annotations.c',
'src/base/spinlock_internal.cc',
'src/base/logging.cc',
'src/base/atomicops-internals-x86.cc',
'src/base/sysinfo.cc',
'src/base/spinlock.cc',
'src/tcmalloc.cc',
'src/malloc_hook.cc',
'src/span.cc',
'src/maybe_threads.cc',
'src/internal_logging.cc',
'src/symbolize.cc',
'src/system-alloc.cc',
'src/memfs_malloc.cc',
'src/central_freelist.cc',
'src/thread_cache.cc',
'src/page_heap.cc',
'src/common.cc',
'src/static_vars.cc',
'src/stack_trace_table.cc',
'src/malloc_extension.cc',
'src/sampler.cc',
'src/stacktrace.cc'
]
__malloc_hook_fragment = '''
#include <malloc.h>
void* (* volatile __malloc_hook)(size_t, const void*) = 0;
'''
def __checkMallocHookVolatile(check_context):
check_context.Message("Checking if __malloc_hook is declared volatile... ")
is_malloc_hook_volatile = check_context.TryCompile(__malloc_hook_fragment, '.cc')
check_context.Result(is_malloc_hook_volatile)
check_context.env.Append(CPPDEFINES=dict(
MALLOC_HOOK_MAYBE_VOLATILE=(is_malloc_hook_volatile and "volatile" or "")))
conf = Configure(env.Clone(), custom_tests=dict(CheckMallocHookVolatile=__checkMallocHookVolatile))
conf.CheckMallocHookVolatile()
env = conf.Finish()
env.Append( CPPDEFINES=["NO_TCMALLOC_SAMPLES","NO_TCMALLOC_SAMPLES","NO_HEAP_CHECK"] )
env.Prepend( CPPPATH=["src/"] )
def removeIfPresent(lst, item):
try:
lst.remove(item)
except ValueError:
pass
for to_remove in ['-Werror', "-Wsign-compare","-Wall"]:
removeIfPresent(env['CCFLAGS'], to_remove)
env.StaticLibrary('tcmalloc_minimal', files)