160 lines
7.2 KiB
Diff
160 lines
7.2 KiB
Diff
|
diff --git a/SConstruct b/SConstruct
|
||
|
index 92d557b..80ee9e8 100644
|
||
|
--- a/SConstruct
|
||
|
+++ b/SConstruct
|
||
|
@@ -23,7 +23,6 @@ from pkg_resources import parse_version
|
||
|
|
||
|
import SCons
|
||
|
import SCons.Script
|
||
|
-from mongo_tooling_metrics.lib.top_level_metrics import SConsToolingMetrics
|
||
|
from site_scons.mongo import build_profiles
|
||
|
|
||
|
# This must be first, even before EnsureSConsVersion, if
|
||
|
@@ -1649,13 +1648,6 @@ env.AddMethod(lambda env, name, **kwargs: add_option(name, **kwargs), 'AddOption
|
||
|
|
||
|
# The placement of this is intentional. Here we setup an atexit method to store tooling metrics.
|
||
|
# We should only register this function after env, env_vars and the parser have been properly initialized.
|
||
|
-SConsToolingMetrics.register_metrics(
|
||
|
- utc_starttime=datetime.utcnow(),
|
||
|
- artifact_dir=env.Dir('$BUILD_DIR').get_abspath(),
|
||
|
- env_vars=env_vars,
|
||
|
- env=env,
|
||
|
- parser=_parser,
|
||
|
-)
|
||
|
|
||
|
if get_option('build-metrics'):
|
||
|
env['BUILD_METRICS_ARTIFACTS_DIR'] = '$BUILD_ROOT/$VARIANT_DIR'
|
||
|
@@ -3026,7 +3018,6 @@ if env.TargetOSIs('posix'):
|
||
|
env.Append(
|
||
|
CCFLAGS=[
|
||
|
"-fasynchronous-unwind-tables",
|
||
|
- "-g2" if not env.TargetOSIs('emscripten') else "-g",
|
||
|
"-Wall",
|
||
|
"-Wsign-compare",
|
||
|
"-Wno-unknown-pragmas",
|
||
|
@@ -3093,6 +3084,8 @@ if env.TargetOSIs('posix'):
|
||
|
|
||
|
# env.Append( " -Wconversion" ) TODO: this doesn't really work yet
|
||
|
env.Append(CXXFLAGS=["-Woverloaded-virtual"])
|
||
|
+ env.Append(CXXFLAGS=os.environ['CXXFLAGS'])
|
||
|
+ env.Append(LINKFLAGS=os.environ['LDFLAGS'])
|
||
|
|
||
|
# On OS X, clang doesn't want the pthread flag at link time, or it
|
||
|
# issues warnings which make it impossible for us to declare link
|
||
|
@@ -3143,7 +3136,7 @@ if env.TargetOSIs('posix'):
|
||
|
], )
|
||
|
|
||
|
#make scons colorgcc friendly
|
||
|
- for key in ('HOME', 'TERM'):
|
||
|
+ for key in ('HOME', 'TERM', 'PATH'):
|
||
|
try:
|
||
|
env['ENV'][key] = os.environ[key]
|
||
|
except KeyError:
|
||
|
@@ -3543,33 +3536,6 @@ def doConfigure(myenv):
|
||
|
myenv.AddMethod(
|
||
|
functools.partial(var_func, var=var, func=CheckFlag), f"Check{var}Supported")
|
||
|
|
||
|
- if myenv.ToolchainIs('gcc', 'clang'):
|
||
|
- # This tells clang/gcc to use the gold linker if it is available - we prefer the gold linker
|
||
|
- # because it is much faster. Don't use it if the user has already configured another linker
|
||
|
- # selection manually.
|
||
|
- if any(flag.startswith('-fuse-ld=') for flag in env['LINKFLAGS']):
|
||
|
- myenv.FatalError(
|
||
|
- f"Use the '--linker' option instead of modifying the LINKFLAGS directly.")
|
||
|
-
|
||
|
- linker_ld = get_option('linker')
|
||
|
- if linker_ld == 'auto':
|
||
|
- if not env.TargetOSIs('darwin', 'macOS'):
|
||
|
- if not myenv.AddToLINKFLAGSIfSupported('-fuse-ld=lld'):
|
||
|
- myenv.FatalError(
|
||
|
- f"The recommended linker 'lld' is not supported with the current compiler configuration, you can try the 'gold' linker with '--linker=gold'."
|
||
|
- )
|
||
|
- elif link_model.startswith("dynamic") and linker_ld == 'bfd':
|
||
|
- # BFD is not supported due to issues with it causing warnings from some of
|
||
|
- # the third party libraries that mongodb is linked with:
|
||
|
- # https://jira.mongodb.org/browse/SERVER-49465
|
||
|
- myenv.FatalError(f"Linker {linker_ld} is not supported with dynamic link model builds.")
|
||
|
- else:
|
||
|
- if not myenv.AddToLINKFLAGSIfSupported(f'-fuse-ld={linker_ld}'):
|
||
|
- myenv.FatalError(f"Linker {linker_ld} could not be configured.")
|
||
|
-
|
||
|
- if has_option('gcov') and myenv.AddToCCFLAGSIfSupported('-fprofile-update=single'):
|
||
|
- myenv.AppendUnique(LINKFLAGS=['-fprofile-update=single'])
|
||
|
-
|
||
|
detectCompiler = Configure(
|
||
|
myenv,
|
||
|
help=False,
|
||
|
@@ -4621,43 +4587,6 @@ def doConfigure(myenv):
|
||
|
if optBuild == "off" and myenv.ToolchainIs('clang') and env.TargetOSIs('darwin'):
|
||
|
myenv.AddToLINKFLAGSIfSupported("-Wl,-no_deduplicate")
|
||
|
|
||
|
- # Apply any link time optimization settings as selected by the 'lto' option.
|
||
|
- if has_option('lto'):
|
||
|
- if myenv.ToolchainIs('msvc'):
|
||
|
- # Note that this is actually more aggressive than LTO, it is whole program
|
||
|
- # optimization due to /GL. However, this is historically what we have done for
|
||
|
- # windows, so we are keeping it.
|
||
|
- #
|
||
|
- # /GL implies /LTCG, so no need to say it in CCFLAGS, but we do need /LTCG on the
|
||
|
- # link flags.
|
||
|
- myenv.Append(CCFLAGS=['/GL'])
|
||
|
- myenv.Append(LINKFLAGS=['/LTCG'])
|
||
|
- myenv.Append(ARFLAGS=['/LTCG'])
|
||
|
- elif myenv.ToolchainIs('gcc', 'clang'):
|
||
|
- # For GCC and clang, the flag is -flto, and we need to pass it both on the compile
|
||
|
- # and link lines.
|
||
|
- if not myenv.AddToCCFLAGSIfSupported('-flto') or \
|
||
|
- not myenv.AddToLINKFLAGSIfSupported('-flto'):
|
||
|
- myenv.ConfError("Link time optimization requested, "
|
||
|
- "but selected compiler does not honor -flto")
|
||
|
-
|
||
|
- if myenv.TargetOSIs('darwin'):
|
||
|
- myenv.AddToLINKFLAGSIfSupported('-Wl,-object_path_lto,${TARGET}.lto')
|
||
|
- else:
|
||
|
- # According to intel benchmarks -fno-plt increases perf
|
||
|
- # See PM-2215
|
||
|
- if linker_ld != "gold":
|
||
|
- myenv.ConfError("lto compilation currently only works with the --linker=gold")
|
||
|
- if link_model != "object":
|
||
|
- myenv.ConfError(
|
||
|
- "lto compilation currently only works with the --link-model=object")
|
||
|
- if not myenv.AddToCCFLAGSIfSupported('-fno-plt') or \
|
||
|
- not myenv.AddToLINKFLAGSIfSupported('-fno-plt'):
|
||
|
- myenv.ConfError("-fno-plt is not supported by the compiler")
|
||
|
-
|
||
|
- else:
|
||
|
- myenv.ConfError("Don't know how to enable --lto on current toolchain")
|
||
|
-
|
||
|
if get_option('runtime-hardening') == "on" and optBuild != "off":
|
||
|
# Older glibc doesn't work well with _FORTIFY_SOURCE=2. Selecting 2.11 as the minimum was an
|
||
|
# emperical decision, as that is the oldest non-broken glibc we seem to require. It is possible
|
||
|
@@ -5120,17 +5049,13 @@ def doConfigure(myenv):
|
||
|
"BOOST_LOG_NO_SHORTHAND_NAMES",
|
||
|
"BOOST_LOG_USE_NATIVE_SYSLOG",
|
||
|
"BOOST_LOG_WITHOUT_THREAD_ATTR",
|
||
|
+ "BOOST_LOG_DYN_LINK",
|
||
|
"BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS",
|
||
|
"BOOST_SYSTEM_NO_DEPRECATED",
|
||
|
"BOOST_THREAD_USES_DATETIME",
|
||
|
("BOOST_THREAD_VERSION", "5"),
|
||
|
])
|
||
|
|
||
|
- if link_model.startswith("dynamic") and not link_model == 'dynamic-sdk':
|
||
|
- conf.env.AppendUnique(CPPDEFINES=[
|
||
|
- "BOOST_LOG_DYN_LINK",
|
||
|
- ])
|
||
|
-
|
||
|
if use_system_version_of_library("boost"):
|
||
|
if not conf.CheckCXXHeader("boost/filesystem/operations.hpp"):
|
||
|
myenv.ConfError("can't find boost headers")
|
||
|
@@ -5327,6 +5252,9 @@ def doConfigure(myenv):
|
||
|
|
||
|
mongoc_mode = get_option('use-system-mongo-c')
|
||
|
conf.env['MONGO_HAVE_LIBMONGOC'] = False
|
||
|
+ conf.env.ParseConfig('pkg-config libbson-1.0 libmongoc-1.0 --cflags')
|
||
|
+ conf.env['LIBDEPS_LIBBSON_SYSLIBDEP'] = 'bson-1.0'
|
||
|
+
|
||
|
if mongoc_mode != 'off':
|
||
|
if conf.CheckLibWithHeader(
|
||
|
["mongoc-1.0"],
|