From https://aur.archlinux.org/cgit/aur.git/tree/mongodb-8.0.12-sconstruct.patch?h=mongodb diff --git a/SConstruct.orig b/SConstruct index 74a32f0..d9dba9f 100644 --- a/SConstruct.orig +++ b/SConstruct @@ -3123,7 +3123,7 @@ if env.TargetOSIs('posix'): env.Append( CCFLAGS=[ "-fasynchronous-unwind-tables", - "-g2" if not env.TargetOSIs('emscripten') else "-g", +# "-g2" if not env.TargetOSIs('emscripten') else "-g", "-Wall", "-Wsign-compare", "-Wno-unknown-pragmas", @@ -3191,6 +3191,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 @@ -3243,7 +3245,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: @@ -3637,35 +3639,35 @@ 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 == "bfd" and env.get("BAZEL_BUILD_ENABLED"): - myenv.FatalError(f"The linker 'bfd' is not supported with BAZEL_BUILD_ENABLED.") - elif 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']) +# 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 == "bfd" and env.get("BAZEL_BUILD_ENABLED"): +# myenv.FatalError(f"The linker 'bfd' is not supported with BAZEL_BUILD_ENABLED.") +# elif 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, @@ -4763,42 +4765,42 @@ 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") +# # 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 @@ -5261,16 +5263,17 @@ 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 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"): @@ -5471,6 +5474,8 @@ 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"],