# -*- mode: python; -*- # # This is the principle SConscript file, invoked by the SConstruct. Its job is # to delegate to any and all per-module SConscript files. import SCons Import("env") Import("module_sconscripts") Import("use_libunwind") env = env.Clone() # Add any "global" dependencies here. This is where we make every build node # depend on a list of other build nodes, such as an allocator or libunwind # or libstdx or similar. env.AppendUnique( LIBDEPS_GLOBAL=[ "$BUILD_DIR/third_party/gperftools/tcmalloc_minimal" if env["MONGO_ALLOCATOR"] in ["tcmalloc-gperftools"] else [], "$BUILD_DIR/third_party/tcmalloc/tcmalloc" if env["MONGO_ALLOCATOR"] in ["tcmalloc-google"] else [], "$BUILD_DIR/third_party/unwind/unwind" if use_libunwind else [], ], ) # NOTE: We must do third_party first as it adds methods to the environment # that we need in the mongo sconscript env.SConscript("third_party/SConscript", must_exist=1, exports=["env"]) # Ensure our subsequent modifications are not shared with the # third_party env. Normally that SConscript would have done a clone, # so handled that isolation itself, but it doesn't since it needs to # alter the env in ways that we need to use up here. env = env.Clone() # Inject common dependencies from third_party globally for all core mongo code # and modules. env.InjectThirdParty( libraries=[ "abseil-cpp", "boost", "croaring", "fmt", "immer", "tomcrypt_md5", "murmurhash3", "safeint", "stemmer", "variant", ] ) # It would be somewhat better if this could be applied down in # `src/mongo/SConscript`, since the goal of doing it here rather than # up in SConstruct is to only enforce this rule for code that we wrote # and exclude third party sources. However, doing it in # `src/mongo/SConscript`` would also exclude applying it for modules, # and we do want this enabled for enterprise. if env.ToolchainIs("gcc"): # With GCC, use the implicit fallthrough flag variant that doesn't # care about your feeble attempts to use comments to explain yourself. env.AddToCCFLAGSIfSupported("-Wimplicit-fallthrough=5") elif env.ToolchainIs("clang"): env.AddToCCFLAGSIfSupported("-Wimplicit-fallthrough") # Run the core mongodb SConscript. env.SConscript("mongo/SConscript", must_exist=1, exports=["env"]) # Run SConscripts for any modules in play env.SConscript(module_sconscripts, must_exist=1, exports=["env"])