summaryrefslogtreecommitdiff
path: root/src/third_party/SConscript
diff options
context:
space:
mode:
authorA. Jesse Jiryu Davis <jesse@mongodb.com>2019-05-30 15:15:08 -0400
committerAndrew Morrow <acm@mongodb.com>2019-07-17 10:49:15 -0400
commitcbead440945c78b577c29dab8c11e81a58ee7731 (patch)
tree424c0395df4ac4bfcf2ab145df259e567006b8f3 /src/third_party/SConscript
parent19d0d47fb83d01edb18e0bcb235d6c39bbe16bbd (diff)
downloadmongo-cbead440945c78b577c29dab8c11e81a58ee7731.tar.gz
SERVER-36242 Optionally use libunwind for backtraces
Diffstat (limited to 'src/third_party/SConscript')
-rw-r--r--src/third_party/SConscript73
1 files changed, 41 insertions, 32 deletions
diff --git a/src/third_party/SConscript b/src/third_party/SConscript
index 1b7b80f23b2..5c0c129b307 100644
--- a/src/third_party/SConscript
+++ b/src/third_party/SConscript
@@ -4,8 +4,11 @@ import libdeps
import json
Import("env use_system_version_of_library usemozjs get_option")
-Import("wiredtiger")
Import("mobile_se")
+Import("use_libunwind")
+Import("use_system_libunwind")
+Import("use_vendored_libunwind")
+Import("wiredtiger")
boostSuffix = "-1.70.0"
snappySuffix = '-1.1.7'
@@ -187,6 +190,18 @@ if not use_system_version_of_library('kms-message'):
'CPPDEFINES' :['KMS_MSG_STATIC']
}
+if use_system_libunwind:
+ thirdPartyEnvironmentModifications['unwind'] = {
+ 'CPPDEFINES' : ['MONGO_USE_LIBUNWIND', 'UNW_LOCAL_ONLY'],
+ 'SYSLIBDEPS' : [env['LIBDEPS_UNWIND_SYSLIBDEP'], 'lzma'],
+ }
+elif use_vendored_libunwind:
+ thirdPartyEnvironmentModifications['unwind'] = {
+ 'CPPDEFINES' : ['MONGO_USE_LIBUNWIND', 'UNW_LOCAL_ONLY'],
+ 'LIBDEPS' : ['$BUILD_DIR/third_party/shim_unwind'],
+ 'SYSLIBDEPS' : ['lzma'],
+ }
+
def injectThirdParty(thisEnv, libraries=[], parts=[]):
libraries = thisEnv.Flatten([libraries])
parts = thisEnv.Flatten([parts])
@@ -212,43 +227,37 @@ s2Env.InjectThirdParty(libraries=['s2', 'boost', 'abseil-cpp', 'fmt', 'safeint']
s2Env.InjectMongoIncludePaths()
s2Env.SConscript('s2/SConscript', exports={'env' : s2Env})
-unwindEnv = None
-if use_system_version_of_library("unwind"):
- unwindEnv = env.Clone(
- SYSLIBDEPS=[
- env['LIBDEPS_UNWIND_SYSLIBDEP'],
- ])
-else:
- unwindEnv = env.Clone()
- # SCons uses the "$CC" tool for both C and assembler files. Distinguish them for the sake of
- # later tools like our Ninja SCons module.
- unwindEnv['ASPP'] = '$CC'
- unwindEnv['ASPPCOM'] = unwindEnv['ASPPCOM'].replace('$CC ', '$ASPP ')
- unwindEnv.InjectThirdParty(libraries=['unwind'])
- unwindEnv.InjectMongoIncludePaths()
+if use_libunwind:
+ if use_system_libunwind:
+ unwindEnv = env.Clone(
+ SYSLIBDEPS=[
+ env['LIBDEPS_UNWIND_SYSLIBDEP'],
+ ])
+ else:
+ unwindEnv = env.Clone()
- def registerConsumerModifications(env, **kwargs):
- for k,v in kwargs.items():
- thirdPartyEnvironmentModifications['unwind'][k] = v
+ # SCons uses the "$CC" tool for both C and assembler files. Distinguish them for the sake of
+ # later tools like our Ninja SCons module.
+ unwindEnv['ASPP'] = '$CC'
+ unwindEnv['ASPPCOM'] = unwindEnv['ASPPCOM'].replace('$CC ', '$ASPP ')
- unwindEnv.AddMethod(registerConsumerModifications, 'RegisterConsumerModifications')
- unwindEnv.SConscript('unwind/SConscript', exports={'env' : unwindEnv})
+ def registerConsumerModifications(env, **kwargs):
+ for k,v in kwargs.items():
+ thirdPartyEnvironmentModifications['unwind'][k] = v
- print("third_party/unwind modifications:",
- ",".join(thirdPartyEnvironmentModifications['unwind'].keys()))
+ unwindEnv.AddMethod(registerConsumerModifications, 'RegisterConsumerModifications')
+ unwindEnv.SConscript('unwind/SConscript', exports={'env' : unwindEnv})
+ unwindEnv.Append(
+ LIBDEPS_INTERFACE=[
+ 'unwind/unwind',
+ ])
- unwindEnv = unwindEnv.Clone(
- LIBDEPS_INTERFACE=[
- 'unwind/unwind',
+ unwindEnv.Library(
+ target="shim_unwind",
+ source=[
+ 'shim_unwind.cpp',
])
-unwindEnv.Library(
- target="shim_unwind",
- source=[
- 'shim_unwind.cpp',
- ])
-
-
if use_system_version_of_library("fmt"):
fmtEnv = env.Clone(
SYSLIBDEPS=[