summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Moody <daniel.moody@mongodb.com>2022-09-27 12:40:24 -0500
committerDaniel Moody <daniel.moody@mongodb.com>2022-09-27 12:40:24 -0500
commitbe60e8d6c6ad9ac938583db103f49706ab8faa27 (patch)
tree78f85d02b11e9b26c487a1a55be0f94afcadc7fe
parent3fb46b7ac816b306c13160765917f57dac0e078e (diff)
downloadmongo-be60e8d6c6ad9ac938583db103f49706ab8faa27.tar.gz
SERVER-68365 added grpc third party integration (excluding third party source)
-rw-r--r--SConstruct42
-rw-r--r--site_scons/site_tools/ninja.py26
-rw-r--r--site_scons/site_tools/protobuf_compiler.py178
-rw-r--r--src/third_party/SConscript23
-rw-r--r--src/third_party/abseil-cpp-master/SConscript1174
-rw-r--r--src/third_party/abseil-cpp-master/abseil-cpp/absl/flags/internal/commandlineflag.cc26
-rw-r--r--src/third_party/abseil-cpp-master/scripts/lib_targets.txt61
-rw-r--r--src/third_party/abseil-cpp-master/scripts/parse_lib_from_ninja.py52
-rw-r--r--src/third_party/gperftools/SConscript3
9 files changed, 1556 insertions, 29 deletions
diff --git a/SConstruct b/SConstruct
index a2029692872..3d404638650 100644
--- a/SConstruct
+++ b/SConstruct
@@ -886,6 +886,7 @@ def variable_tools_converter(val):
"distsrc",
"gziptool",
"idl_tool",
+ "protobuf_compiler",
"jsheader",
"mongo_test_execution",
"mongo_test_list",
@@ -1329,6 +1330,18 @@ env_vars.Add(
)
env_vars.Add(
+ 'PROTOC',
+ default="$DESTDIR/bin/protobuf_compiler$PROGSUFFIX",
+ help='Path to protobuf compiler.',
+)
+
+env_vars.Add(
+ 'PROTOC_CPP_PLUGIN',
+ default="$DESTDIR/bin/grpc_cpp_plugin$PROGSUFFIX",
+ help='Path to protobuf compiler grpc plugin.',
+)
+
+env_vars.Add(
'SPLIT_DWARF',
help='Set the boolean (auto, on/off true/false 1/0) to enable gsplit-dwarf (non-Windows).',
converter=split_dwarf_converter, default="auto")
@@ -2008,6 +2021,7 @@ env['BUILDERS']['SharedArchive'] = SCons.Builder.Builder(
# Teach builders how to build idl files
for builder in ['SharedObject', 'StaticObject']:
env['BUILDERS'][builder].add_src_builder("Idlc")
+ env['BUILDERS'][builder].add_src_builder("Protoc")
if link_model.startswith("dynamic"):
@@ -2713,7 +2727,7 @@ elif env.TargetOSIs('windows'):
# Enables the __cplusplus preprocessor macro to report an updated value for recent C++ language
# standards support.
- env.Append(CCFLAGS=["/Zc:__cplusplus"])
+ env.Append(CXXFLAGS=["/Zc:__cplusplus"])
# Tells the compiler to preferentially call global operator delete or operator delete[]
# functions that have a second parameter of type size_t when the size of the object is available.
@@ -3667,10 +3681,10 @@ def doConfigure(myenv):
if myenv.ToolchainIs('msvc'):
if get_option('cxx-std') == "17":
- myenv.AppendUnique(CCFLAGS=['/std:c++17',
+ myenv.AppendUnique(CXXFLAGS=['/std:c++17',
'/Zc:lambda']) # /Zc:lambda is implied by /std:c++20
elif get_option('cxx-std') == "20":
- myenv.AppendUnique(CCFLAGS=['/std:c++20'])
+ myenv.AppendUnique(CXXFLAGS=['/std:c++20'])
else:
if get_option('cxx-std') == "17":
if not myenv.AddToCXXFLAGSIfSupported('-std=c++17'):
@@ -5306,6 +5320,28 @@ if get_option('ninja') != 'disabled':
.format(env['ICECREAM_VERSION']))
ninja_builder = Tool("ninja")
+
+ # This list is the list of targets we can build without first building
+ # all generated sources. This is list is also a list of dependencies required
+ # to build the protobuf compiler and grpc plugins. We must build protobuf
+ # before building all generated sources, because the protobuf compiler is required
+ # for generating some sources. Once we have better ways to deal with generated
+ # sources and ninja, this list can be removed.
+ env['NINJA_PREGEN_SOURCE_TARGETS'] = [
+ 'third_party/protobuf',
+ env.Dir('$DESTDIR').path,
+ 'third_party/zlib',
+ 'shim_zlib',
+ 'shim_allocator',
+ 'third_party/unwind',
+ 'shim_unwind',
+ 'third_party_shim',
+ 'third_party/gperftools',
+ 'grpc_plugin_support',
+ 'third_party/grpc/dist/src/compiler',
+ 'protobuf_compilier',
+ 'grpc_cpp_plugin',
+ ]
env["NINJA_BUILDDIR"] = env.Dir("$NINJA_BUILDDIR")
ninja_builder.generate(env)
diff --git a/site_scons/site_tools/ninja.py b/site_scons/site_tools/ninja.py
index a55205fc612..2b2fe875d89 100644
--- a/site_scons/site_tools/ninja.py
+++ b/site_scons/site_tools/ninja.py
@@ -810,15 +810,23 @@ class NinjaState:
# cycle.
if (generated_source_files and check_generated_source_deps(build)):
- # Make all non-generated source targets depend on
- # _generated_sources. We use order_only for generated
- # sources so that we don't rebuild the world if one
- # generated source was rebuilt. We just need to make
- # sure that all of these sources are generated before
- # other builds.
- order_only = build.get("order_only", [])
- order_only.append(generated_sources_alias)
- build["order_only"] = order_only
+ depends_on_gen_source = False
+ if build['outputs']:
+ depends_on_gen_source = all([
+ True if gen_source_exception not in build['outputs'][0] else False
+ for gen_source_exception in self.env.get('NINJA_PREGEN_SOURCE_TARGETS', [])
+ ])
+
+ if depends_on_gen_source:
+ # Make all non-generated source targets depend on
+ # _generated_sources. We use order_only for generated
+ # sources so that we don't rebuild the world if one
+ # generated source was rebuilt. We just need to make
+ # sure that all of these sources are generated before
+ # other builds.
+ order_only = build.get("order_only", [])
+ order_only.append(generated_sources_alias)
+ build["order_only"] = order_only
if "order_only" in build:
build["order_only"].sort()
diff --git a/site_scons/site_tools/protobuf_compiler.py b/site_scons/site_tools/protobuf_compiler.py
new file mode 100644
index 00000000000..78791a8537d
--- /dev/null
+++ b/site_scons/site_tools/protobuf_compiler.py
@@ -0,0 +1,178 @@
+# Copyright 2022 MongoDB Inc.
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+"""Protobuf Compiler Scons Tool."""
+
+import os
+import traceback
+
+import SCons
+
+def protoc_emitter(target, source, env):
+
+ first_source = str(source[0])
+
+ if not first_source.endswith(".proto"):
+ raise ValueError("Bad protoc file name '%s', it must end with '.proto' " % (first_source))
+
+ base_file_name, _ = SCons.Util.splitext(str(target[0]))
+ new_targets = []
+ for type in env.get('PROTOC_GEN_TYPES', []):
+ if type == 'cpp':
+ new_targets += [f"{base_file_name}.pb.cc", f"{base_file_name}.pb.h"]
+
+ plugins = env.get('PROTOC_PLUGINS', [])
+ for name in plugins:
+ for ext in plugins[name].get('exts', []):
+ new_targets += [f"{base_file_name}{ext}"]
+
+ env.Alias("generated-sources", new_targets)
+
+ return new_targets, source
+
+def protoc_scanner(node, env, path):
+
+ # TODO Make this scanner understand how to parse .proto files to find .proto
+ # dependencies.
+ deps = []
+ plugins = env.get('PROTOC_PLUGINS', {})
+ for name in plugins:
+ deps.append(env.File(env.subst(plugins[name].get('plugin'))))
+
+ deps.append(env.File("$PROTOC"))
+
+ return deps
+
+protoc_scanner = SCons.Scanner.Scanner(function=protoc_scanner, skeys=[".proto"])
+
+def type_out_gen(source, target, env, for_signature):
+ # the user set PROTOC_CPPGEN_DIR that means we add the flag
+ # to turn on cpp generation
+ try:
+ result = env.subst('$PROTOC_GEN_TYPES', target=target, source=source)
+ if 'cpp' in result:
+ out_dir = os.path.dirname(str(target[0].abspath))
+ os.makedirs(out_dir, exist_ok=True)
+ return f"--cpp_out={out_dir}"
+ except:
+ traceback.print_exc()
+
+def gen_types_str(source, target, env, for_signature):
+ # This generates the types from the list of types we which are supported and
+ # which the user has set an output dir for. This is for build output messages.
+ gen_types_results = []
+ for gen_dir, type in env.get('_PROTOC_SUPPORTED_GEN_TYPES', []):
+ result = env.subst(gen_dir, target=target, source=source)
+ if result:
+ gen_types_results += [type]
+ return ','.join(gen_types_results)
+
+def gen_types(source, target, env, for_signature):
+ # This generates the types from the list of types we which are supported and
+ # which the user has set an output dir for. This selects the types to add to
+ # the command line to then be expanded to --XXX_out options later.
+ gen_types_results = []
+ for gen_dir, type in env.get('_PROTOC_SUPPORTED_GEN_TYPES', []):
+ result = env.subst(gen_dir, target=target, source=source)
+ if result:
+ gen_types_results += [result]
+ return ' '.join(gen_types_results)
+
+def gen_plugins(source, target, env, for_signature):
+ # Plugins are user customizable ways to modify the generation and generate
+ # additional files if desired. This extracts the desired plugins from the environment
+ # and formats them to be suitable for the command line.
+ gen_types_results = []
+ plugins = env.get('PROTOC_PLUGINS', [])
+ for name in plugins:
+ out_dir = plugins[name].get('out_dir')
+ plugin = plugins[name].get('plugin')
+ options = plugins[name].get('options')
+ if plugin and out_dir:
+ cmd_line = f'--{name}_out='
+ for opt in options:
+ cmd_line += f'{opt}:'
+ out_dir = os.path.dirname(str(target[0].abspath))
+ os.makedirs(out_dir, exist_ok=True)
+ cmd_line += out_dir
+ cmd_line += f' --plugin=protoc-gen-{name}={env.File(plugin).abspath}'
+ gen_types_results += [cmd_line]
+ else:
+ print(f"Failed to process PROTOC plugin {name}: {plugins[name]}")
+
+ return ' '.join(gen_types_results)
+
+
+def protocActionGen(source, target, env, for_signature):
+ # The protobuf compiler doesn't play nice with scons variant dir. It will output its generated
+ # files in the specified out dir + the source path given to it. For scons variant dir where we
+ # want to put things from "src" into "BUILD_DIR" we would have to somehow pass it a source file
+ # without the "src" prefixing it. This means we must change working directory where scons
+ # normally executes in the src root directory. Because we manage the pathing flags within
+ # the scons variables, we can accurately update any pathing to allow us to switch to source
+ # location and perform the command there.
+
+ working_dir = os.path.dirname(target[0].srcnode().path)
+ protoc_path = os.path.abspath(env.subst('$PROTOC'))
+
+ return env.subst(f"cd {working_dir} && {protoc_path} $_PROTOC_GEN_TYPES $_PROTOC_PLUGINS $PROTOCFLAGS ${{SOURCE.file}}", target=target, source=source)
+
+def generate(env):
+
+ ProtocAction = SCons.Action.CommandGeneratorAction(
+ protocActionGen,
+ {"cmdstr": "Generating $_PROTOC_GEN_TYPES_STR Protocol Buffers from ${SOURCE}"}
+ if not env.get("VERBOSE", "").lower() in ['true', '1'] else {"cmdstr": ""},
+ )
+
+ ProtocBuilder = SCons.Builder.Builder(
+ action=ProtocAction,
+ emitter=protoc_emitter,
+ src_suffix=".proto",
+ suffix=".cc",
+ source_scanner=protoc_scanner,
+ single_source=1,
+ )
+ env.Append(SCANNERS=protoc_scanner)
+ env["BUILDERS"]["Protoc"] = ProtocBuilder
+
+ env["PROTOC"] = env.get('PROTOC', env.WhereIs('protoc'))
+
+ # These vars setup the different generation options
+ env["_PROTOC_GEN_TYPES"] = gen_types
+ env['_PROTOC_GEN_TYPES_STR'] = gen_types_str
+ env['_PROTOC_PLUGINS'] = gen_plugins
+
+ # The general way to default the out dir for any given type
+ env['_PROTOC_DEFAULT_GENOUT'] = type_out_gen
+
+ # TODO create variables to support other generation types, might require a more flexible
+ # builder setup
+ env["_PROTOC_SUPPORTED_GEN_TYPES"] = [('$_PROTOC_DEFAULT_GENOUT', 'cpp')]
+
+ # User facing customizable variables
+ env["PROTOC_GEN_TYPES"] = []
+ env['PROTOC_PLUGINS'] = {}
+
+ env['PROTOCFLAGS'] = SCons.Util.CLVar('')
+
+def exists(env):
+ return True
diff --git a/src/third_party/SConscript b/src/third_party/SConscript
index 8f8b559ecd0..aece57e3656 100644
--- a/src/third_party/SConscript
+++ b/src/third_party/SConscript
@@ -21,7 +21,10 @@ variantSuffix = '-1.4.0'
thirdPartyEnvironmentModifications = {
'abseil-cpp': {'CPPPATH': ['#/src/third_party/abseil-cpp-master/abseil-cpp'], },
+ 'cares': {'CPPPATH': ['#src/third_party/cares/dist/include', '#src/third_party/cares/platform/${TARGET_OS}_${TARGET_ARCH}/install/include'], },
'fmt': {'CPPPATH': ['#src/third_party/fmt/dist/include'], },
+ 'protobuf': {'CPPPATH': ['#src/third_party/protobuf/dist/src'], },
+ 're2': {'CPPPATH': ['#src/third_party/re2/dist'], },
's2': {'CPPPATH': ['#src/third_party/s2'], },
'safeint': {
'CPPPATH': ['#src/third_party/SafeInt'],
@@ -39,7 +42,8 @@ thirdPartyEnvironmentModifications = {
"/include",
],
'FORCEINCLUDES': ['js-config.h', ],
- }
+ },
+ 'zlib': {'CPPPATH': ['#/src/third_party/zlib'], },
}
@@ -353,9 +357,11 @@ abseilEnv = env.Clone()
abseilEnv.InjectThirdParty(libraries=['abseil-cpp'])
abseilEnv.SConscript(abseilDirectory + '/SConscript', exports={'env': abseilEnv})
abseilEnv = abseilEnv.Clone(LIBDEPS_INTERFACE=[
- abseilDirectory + '/absl_container',
+ abseilDirectory + '/absl_city',
abseilDirectory + '/absl_hash',
- abseilDirectory + '/absl_numeric',
+ abseilDirectory + '/absl_int128',
+ abseilDirectory + '/absl_raw_hash_set',
+ abseilDirectory + '/absl_wyhash',
])
abseilEnv.ShimLibrary(name="abseil")
@@ -599,3 +605,14 @@ if get_option('ssl') == 'on':
])
kmsEnv.ShimLibrary(name="kms_message", )
+
+env.SConscript(
+ dirs=[
+ 'cares',
+ 're2',
+ 'protobuf',
+ 'grpc',
+ ],
+ duplicate=False,
+ exports={'env': env}
+) \ No newline at end of file
diff --git a/src/third_party/abseil-cpp-master/SConscript b/src/third_party/abseil-cpp-master/SConscript
index f65389ad7d4..97579aaf091 100644
--- a/src/third_party/abseil-cpp-master/SConscript
+++ b/src/third_party/abseil-cpp-master/SConscript
@@ -4,37 +4,1185 @@ env = env.Clone()
env.InjectThirdParty(libraries=['abseil-cpp'])
+if env.ToolchainIs('msvc'):
+ env.Append(
+ CPPDEFINES=[
+ 'NOMINMAX',
+ ],
+ CCFLAGS=[
+ ],
+ )
+
env.Library(
- target="absl_numeric",
+ target='absl_strerror',
source=[
- "abseil-cpp/absl/numeric/int128.cc",
+ 'abseil-cpp/absl/base/internal/strerror.cc',
],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_scoped_set_env',
+ source=[
+ 'abseil-cpp/absl/base/internal/scoped_set_env.cc',
+ ],
+ LIBDEPS=[
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ ]
+)
+
+env.Library(
+ target='absl_periodic_sampler',
+ source=[
+ 'abseil-cpp/absl/base/internal/periodic_sampler.cc',
+ ],
+ LIBDEPS=[
+ 'absl_exponential_biased',
+ ]
+)
+
+env.Library(
+ target='absl_spinlock_wait',
+ source=[
+ 'abseil-cpp/absl/base/internal/spinlock_wait.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_log_severity',
+ source=[
+ 'abseil-cpp/absl/base/log_severity.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_raw_logging_internal',
+ source=[
+ 'abseil-cpp/absl/base/internal/raw_logging.cc',
+ ],
+ LIBDEPS=[
+ 'absl_log_severity',
+ ]
+)
+
+env.Library(
+ target='absl_exponential_biased',
+ source=[
+ 'abseil-cpp/absl/base/internal/exponential_biased.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_malloc_internal',
+ source=[
+ 'abseil-cpp/absl/base/internal/low_level_alloc.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ ]
+)
+
+env.Library(
+ target='absl_throw_delegate',
+ source=[
+ 'abseil-cpp/absl/base/internal/throw_delegate.cc',
+ ],
+ LIBDEPS=[
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ ]
+)
+
+env.Library(
+ target='absl_base',
+ source=[
+ 'abseil-cpp/absl/base/internal/cycleclock.cc',
+ 'abseil-cpp/absl/base/internal/spinlock.cc',
+ 'abseil-cpp/absl/base/internal/sysinfo.cc',
+ 'abseil-cpp/absl/base/internal/thread_identity.cc',
+ 'abseil-cpp/absl/base/internal/unscaledcycleclock.cc',
+ ],
+ LIBDEPS=[
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ ]
+)
+
+env.Library(
+ target='absl_raw_hash_set',
+ source=[
+ 'abseil-cpp/absl/container/internal/raw_hash_set.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_civil_time',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_exponential_biased',
+ 'absl_graphcycles_internal',
+ 'absl_hashtablez_sampler',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ ]
+)
+
+env.Library(
+ target='absl_hashtablez_sampler',
+ source=[
+ 'abseil-cpp/absl/container/internal/hashtablez_sampler.cc',
+ 'abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_civil_time',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_exponential_biased',
+ 'absl_graphcycles_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ ]
+)
+
+env.Library(
+ target='absl_stacktrace',
+ source=[
+ 'abseil-cpp/absl/debugging/stacktrace.cc',
+ ],
+ LIBDEPS=[
+ 'absl_debugging_internal',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ ]
+)
+
+env.Library(
+ target='absl_examine_stack',
+ source=[
+ 'abseil-cpp/absl/debugging/internal/examine_stack.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_symbolize',
+ source=[
+ 'abseil-cpp/absl/debugging/symbolize.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_demangle_internal',
+ source=[
+ 'abseil-cpp/absl/debugging/internal/demangle.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ ]
+)
+
+env.Library(
+ target='absl_leak_check',
+ source=[
+ 'abseil-cpp/absl/debugging/leak_check.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_debugging_internal',
+ source=[
+ 'abseil-cpp/absl/debugging/internal/address_is_readable.cc',
+ 'abseil-cpp/absl/debugging/internal/elf_mem_image.cc',
+ 'abseil-cpp/absl/debugging/internal/vdso_support.cc',
+ ],
+ LIBDEPS=[
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ ]
+)
+
+env.Library(
+ target='absl_leak_check_disable',
+ source=[
+ 'abseil-cpp/absl/debugging/leak_check_disable.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_failure_signal_handler',
+ source=[
+ 'abseil-cpp/absl/debugging/failure_signal_handler.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_examine_stack',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_flags_config',
+ source=[
+ 'abseil-cpp/absl/flags/usage_config.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_civil_time',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_flags_program_name',
+ 'absl_graphcycles_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ ]
+)
+
+env.Library(
+ target='absl_flags_marshalling',
+ source=[
+ 'abseil-cpp/absl/flags/marshalling.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_flags',
+ source=[
+ 'abseil-cpp/absl/flags/flag.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_bad_variant_access',
+ 'absl_base',
+ 'absl_city',
+ 'absl_civil_time',
+ 'absl_cord',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_exponential_biased',
+ 'absl_flags_commandlineflag',
+ 'absl_flags_commandlineflag_internal',
+ 'absl_flags_config',
+ 'absl_flags_internal',
+ 'absl_flags_marshalling',
+ 'absl_flags_private_handle_accessor',
+ 'absl_flags_program_name',
+ 'absl_flags_reflection',
+ 'absl_graphcycles_internal',
+ 'absl_hash',
+ 'absl_hashtablez_sampler',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_hash_set',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ 'absl_wyhash',
+ ]
+)
+
+env.Library(
+ target='absl_flags_private_handle_accessor',
+ source=[
+ 'abseil-cpp/absl/flags/internal/private_handle_accessor.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_flags_commandlineflag',
+ 'absl_flags_commandlineflag_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_flags_commandlineflag_internal',
+ source=[
+ 'abseil-cpp/absl/flags/internal/commandlineflag.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_flags_commandlineflag',
+ source=[
+ 'abseil-cpp/absl/flags/commandlineflag.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_flags_commandlineflag_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_flags_program_name',
+ source=[
+ 'abseil-cpp/absl/flags/internal/program_name.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_civil_time',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_graphcycles_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ ]
+)
+
+env.Library(
+ target='absl_flags_reflection',
+ source=[
+ 'abseil-cpp/absl/flags/reflection.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_bad_variant_access',
+ 'absl_base',
+ 'absl_city',
+ 'absl_civil_time',
+ 'absl_cord',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_exponential_biased',
+ 'absl_flags_commandlineflag',
+ 'absl_flags_commandlineflag_internal',
+ 'absl_flags_config',
+ 'absl_flags_private_handle_accessor',
+ 'absl_flags_program_name',
+ 'absl_graphcycles_internal',
+ 'absl_hash',
+ 'absl_hashtablez_sampler',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_hash_set',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ 'absl_wyhash',
+ ]
+)
+
+env.Library(
+ target='absl_flags_internal',
+ source=[
+ 'abseil-cpp/absl/flags/internal/flag.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_civil_time',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_flags_commandlineflag',
+ 'absl_flags_commandlineflag_internal',
+ 'absl_flags_config',
+ 'absl_flags_marshalling',
+ 'absl_flags_program_name',
+ 'absl_graphcycles_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ ]
+)
+
+env.Library(
+ target='absl_flags_usage',
+ source=[
+ 'abseil-cpp/absl/flags/usage.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_bad_variant_access',
+ 'absl_base',
+ 'absl_city',
+ 'absl_civil_time',
+ 'absl_cord',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_exponential_biased',
+ 'absl_flags',
+ 'absl_flags_commandlineflag',
+ 'absl_flags_commandlineflag_internal',
+ 'absl_flags_config',
+ 'absl_flags_internal',
+ 'absl_flags_marshalling',
+ 'absl_flags_private_handle_accessor',
+ 'absl_flags_program_name',
+ 'absl_flags_reflection',
+ 'absl_flags_usage_internal',
+ 'absl_graphcycles_internal',
+ 'absl_hash',
+ 'absl_hashtablez_sampler',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_hash_set',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ 'absl_wyhash',
+ ]
+)
+
+env.Library(
+ target='absl_flags_usage_internal',
+ source=[
+ 'abseil-cpp/absl/flags/internal/usage.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_bad_variant_access',
+ 'absl_base',
+ 'absl_city',
+ 'absl_civil_time',
+ 'absl_cord',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_exponential_biased',
+ 'absl_flags',
+ 'absl_flags_commandlineflag',
+ 'absl_flags_commandlineflag_internal',
+ 'absl_flags_config',
+ 'absl_flags_internal',
+ 'absl_flags_marshalling',
+ 'absl_flags_private_handle_accessor',
+ 'absl_flags_program_name',
+ 'absl_flags_reflection',
+ 'absl_graphcycles_internal',
+ 'absl_hash',
+ 'absl_hashtablez_sampler',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_hash_set',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ 'absl_wyhash',
+ ]
+)
+
+env.Library(
+ target='absl_flags_parse',
+ source=[
+ 'abseil-cpp/absl/flags/parse.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_bad_variant_access',
+ 'absl_base',
+ 'absl_city',
+ 'absl_civil_time',
+ 'absl_cord',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_exponential_biased',
+ 'absl_flags',
+ 'absl_flags_commandlineflag',
+ 'absl_flags_commandlineflag_internal',
+ 'absl_flags_config',
+ 'absl_flags_internal',
+ 'absl_flags_marshalling',
+ 'absl_flags_private_handle_accessor',
+ 'absl_flags_program_name',
+ 'absl_flags_reflection',
+ 'absl_flags_usage',
+ 'absl_flags_usage_internal',
+ 'absl_graphcycles_internal',
+ 'absl_hash',
+ 'absl_hashtablez_sampler',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_hash_set',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_synchronization',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ 'absl_wyhash',
+ ]
+)
+
+env.Library(
+ target='absl_wyhash',
+ source=[
+ 'abseil-cpp/absl/hash/internal/wyhash.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ ]
+)
+
+env.Library(
+ target='absl_city',
+ source=[
+ 'abseil-cpp/absl/hash/internal/city.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ ]
+)
+
+env.Library(
+ target='absl_hash',
+ source=[
+ 'abseil-cpp/absl/hash/internal/hash.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_bad_variant_access',
+ 'absl_base',
+ 'absl_city',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ 'absl_wyhash',
+ ]
+)
+
+env.Library(
+ target='absl_int128',
+ source=[
+ 'abseil-cpp/absl/numeric/int128.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_random_internal_randen_hwaes',
+ source=[
+ 'abseil-cpp/absl/random/internal/randen_detect.cc',
+ ],
+ LIBDEPS=[
+ 'absl_random_internal_platform',
+ 'absl_random_internal_randen_hwaes_impl',
+ ]
)
env.Library(
- target="absl_hash",
+ target='absl_random_internal_seed_material',
source=[
- "abseil-cpp/absl/hash/internal/city.cc",
- "abseil-cpp/absl/hash/internal/hash.cc",
- "abseil-cpp/absl/hash/internal/wyhash.cc",
+ 'abseil-cpp/absl/random/internal/seed_material.cc',
],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
)
env.Library(
- target="absl_container",
+ target='absl_random_internal_randen_slow',
source=[
- "abseil-cpp/absl/container/internal/raw_hash_set.cc",
+ 'abseil-cpp/absl/random/internal/randen_slow.cc',
],
LIBDEPS=[
- "absl_hash",
- "absl_throw_delegate",
+ 'absl_random_internal_platform',
+ ]
+)
+
+env.Library(
+ target='absl_random_seed_gen_exception',
+ source=[
+ 'abseil-cpp/absl/random/seed_gen_exception.cc',
],
+ LIBDEPS=[
+
+ ]
)
env.Library(
- target="absl_throw_delegate",
+ target='absl_random_internal_pool_urbg',
source=[
- "abseil-cpp/absl/base/internal/throw_delegate.cc",
+ 'abseil-cpp/absl/random/internal/pool_urbg.cc',
],
- LIBDEPS=[],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_random_internal_platform',
+ 'absl_random_internal_randen',
+ 'absl_random_internal_randen_hwaes',
+ 'absl_random_internal_randen_hwaes_impl',
+ 'absl_random_internal_randen_slow',
+ 'absl_random_internal_seed_material',
+ 'absl_random_seed_gen_exception',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
)
+
+env.Library(
+ target='absl_random_distributions',
+ source=[
+ 'abseil-cpp/absl/random/discrete_distribution.cc',
+ 'abseil-cpp/absl/random/gaussian_distribution.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_random_internal_randen_hwaes_impl',
+ source=[
+ 'abseil-cpp/absl/random/internal/randen_hwaes.cc',
+ ],
+ LIBDEPS=[
+ 'absl_random_internal_platform',
+ ]
+)
+
+env.Library(
+ target='absl_random_seed_sequences',
+ source=[
+ 'abseil-cpp/absl/random/seed_sequences.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_random_internal_platform',
+ 'absl_random_internal_pool_urbg',
+ 'absl_random_internal_randen',
+ 'absl_random_internal_randen_hwaes',
+ 'absl_random_internal_randen_hwaes_impl',
+ 'absl_random_internal_randen_slow',
+ 'absl_random_internal_seed_material',
+ 'absl_random_seed_gen_exception',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_random_internal_randen',
+ source=[
+ 'abseil-cpp/absl/random/internal/randen.cc',
+ ],
+ LIBDEPS=[
+ 'absl_random_internal_platform',
+ 'absl_random_internal_randen_hwaes',
+ 'absl_random_internal_randen_hwaes_impl',
+ 'absl_random_internal_randen_slow',
+ ]
+)
+
+env.Library(
+ target='absl_random_internal_distribution_test_util',
+ source=[
+ 'abseil-cpp/absl/random/internal/chi_square.cc',
+ 'abseil-cpp/absl/random/internal/distribution_test_util.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_random_internal_platform',
+ source=[
+ 'abseil-cpp/absl/random/internal/randen_round_keys.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_statusor',
+ source=[
+ 'abseil-cpp/absl/status/statusor.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_bad_variant_access',
+ 'absl_base',
+ 'absl_cord',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_status',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_status',
+ source=[
+ 'abseil-cpp/absl/status/status.cc',
+ 'abseil-cpp/absl/status/status_payload_printer.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_cord',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_str_format_internal',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_cord',
+ source=[
+ 'abseil-cpp/absl/strings/cord.cc',
+ 'abseil-cpp/absl/strings/internal/cord_internal.cc',
+ 'abseil-cpp/absl/strings/internal/cord_rep_ring.cc',
+ ],
+ LIBDEPS=[
+ 'absl_bad_optional_access',
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_str_format_internal',
+ source=[
+ 'abseil-cpp/absl/strings/internal/str_format/arg.cc',
+ 'abseil-cpp/absl/strings/internal/str_format/bind.cc',
+ 'abseil-cpp/absl/strings/internal/str_format/extension.cc',
+ 'abseil-cpp/absl/strings/internal/str_format/float_conversion.cc',
+ 'abseil-cpp/absl/strings/internal/str_format/output.cc',
+ 'abseil-cpp/absl/strings/internal/str_format/parser.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_strings_internal',
+ source=[
+ 'abseil-cpp/absl/strings/internal/ostringstream.cc',
+ 'abseil-cpp/absl/strings/internal/utf8.cc',
+ 'abseil-cpp/absl/strings/internal/escaping.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ ]
+)
+
+env.Library(
+ target='absl_strings',
+ source=[
+ 'abseil-cpp/absl/strings/ascii.cc',
+ 'abseil-cpp/absl/strings/charconv.cc',
+ 'abseil-cpp/absl/strings/escaping.cc',
+ 'abseil-cpp/absl/strings/internal/charconv_bigint.cc',
+ 'abseil-cpp/absl/strings/internal/charconv_parse.cc',
+ 'abseil-cpp/absl/strings/internal/memutil.cc',
+ 'abseil-cpp/absl/strings/match.cc',
+ 'abseil-cpp/absl/strings/numbers.cc',
+ 'abseil-cpp/absl/strings/str_cat.cc',
+ 'abseil-cpp/absl/strings/str_replace.cc',
+ 'abseil-cpp/absl/strings/str_split.cc',
+ 'abseil-cpp/absl/strings/string_view.cc',
+ 'abseil-cpp/absl/strings/substitute.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ ]
+)
+
+env.Library(
+ target='absl_synchronization',
+ source=[
+ 'abseil-cpp/absl/synchronization/barrier.cc',
+ 'abseil-cpp/absl/synchronization/blocking_counter.cc',
+ 'abseil-cpp/absl/synchronization/internal/create_thread_identity.cc',
+ 'abseil-cpp/absl/synchronization/internal/per_thread_sem.cc',
+ 'abseil-cpp/absl/synchronization/internal/waiter.cc',
+ 'abseil-cpp/absl/synchronization/notification.cc',
+ 'abseil-cpp/absl/synchronization/mutex.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_civil_time',
+ 'absl_debugging_internal',
+ 'absl_demangle_internal',
+ 'absl_graphcycles_internal',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_stacktrace',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_symbolize',
+ 'absl_throw_delegate',
+ 'absl_time',
+ 'absl_time_zone',
+ ]
+)
+
+env.Library(
+ target='absl_graphcycles_internal',
+ source=[
+ 'abseil-cpp/absl/synchronization/internal/graphcycles.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_log_severity',
+ 'absl_malloc_internal',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ ]
+)
+
+env.Library(
+ target='absl_time_zone',
+ source=[
+ 'abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc',
+ 'abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc',
+ 'abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc',
+ 'abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc',
+ 'abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc',
+ 'abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc',
+ 'abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc',
+ 'abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc',
+ 'abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_civil_time',
+ source=[
+ 'abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc',
+ ],
+ LIBDEPS=[
+
+ ]
+)
+
+env.Library(
+ target='absl_time',
+ source=[
+ 'abseil-cpp/absl/time/civil_time.cc',
+ 'abseil-cpp/absl/time/clock.cc',
+ 'abseil-cpp/absl/time/duration.cc',
+ 'abseil-cpp/absl/time/format.cc',
+ 'abseil-cpp/absl/time/time.cc',
+ ],
+ LIBDEPS=[
+ 'absl_base',
+ 'absl_civil_time',
+ 'absl_int128',
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ 'absl_spinlock_wait',
+ 'absl_strings',
+ 'absl_strings_internal',
+ 'absl_throw_delegate',
+ 'absl_time_zone',
+ ]
+)
+
+env.Library(
+ target='absl_bad_any_cast_impl',
+ source=[
+ 'abseil-cpp/absl/types/bad_any_cast.cc',
+ ],
+ LIBDEPS=[
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ ]
+)
+
+env.Library(
+ target='absl_bad_optional_access',
+ source=[
+ 'abseil-cpp/absl/types/bad_optional_access.cc',
+ ],
+ LIBDEPS=[
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ ]
+)
+
+env.Library(
+ target='absl_bad_variant_access',
+ source=[
+ 'abseil-cpp/absl/types/bad_variant_access.cc',
+ ],
+ LIBDEPS=[
+ 'absl_log_severity',
+ 'absl_raw_logging_internal',
+ ]
+)
+
+
diff --git a/src/third_party/abseil-cpp-master/abseil-cpp/absl/flags/internal/commandlineflag.cc b/src/third_party/abseil-cpp-master/abseil-cpp/absl/flags/internal/commandlineflag.cc
new file mode 100644
index 00000000000..4482955c4cb
--- /dev/null
+++ b/src/third_party/abseil-cpp-master/abseil-cpp/absl/flags/internal/commandlineflag.cc
@@ -0,0 +1,26 @@
+//
+// Copyright 2020 The Abseil Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "absl/flags/internal/commandlineflag.h"
+
+namespace absl {
+ABSL_NAMESPACE_BEGIN
+namespace flags_internal {
+
+FlagStateInterface::~FlagStateInterface() {}
+
+} // namespace flags_internal
+ABSL_NAMESPACE_END
+} // namespace absl
diff --git a/src/third_party/abseil-cpp-master/scripts/lib_targets.txt b/src/third_party/abseil-cpp-master/scripts/lib_targets.txt
new file mode 100644
index 00000000000..c524a997c49
--- /dev/null
+++ b/src/third_party/abseil-cpp-master/scripts/lib_targets.txt
@@ -0,0 +1,61 @@
+absl_bad_any_cast_impl
+absl_bad_optional_access
+absl_bad_variant_access
+absl_base
+absl_city
+absl_civil_time
+absl_cord
+absl_debugging_internal
+absl_demangle_internal
+absl_examine_stack
+absl_exponential_biased
+absl_failure_signal_handler
+absl_flags
+absl_flags_commandlineflag
+absl_flags_commandlineflag_internal
+absl_flags_config
+absl_flags_internal
+absl_flags_marshalling
+absl_flags_parse
+absl_flags_private_handle_accessor
+absl_flags_program_name
+absl_flags_reflection
+absl_flags_usage
+absl_flags_usage_internal
+absl_graphcycles_internal
+absl_hash
+absl_hashtablez_sampler
+absl_int128
+absl_leak_check
+absl_leak_check_disable
+absl_log_severity
+absl_malloc_internal
+absl_periodic_sampler
+absl_random_distributions
+absl_random_internal_distribution_test_util
+absl_random_internal_platform
+absl_random_internal_pool_urbg
+absl_random_internal_randen
+absl_random_internal_randen_hwaes
+absl_random_internal_randen_hwaes_impl
+absl_random_internal_randen_slow
+absl_random_internal_seed_material
+absl_random_seed_gen_exception
+absl_random_seed_sequences
+absl_raw_hash_set
+absl_raw_logging_internal
+absl_scoped_set_env
+absl_spinlock_wait
+absl_stacktrace
+absl_status
+absl_statusor
+absl_str_format_internal
+absl_strerror
+absl_strings
+absl_strings_internal
+absl_symbolize
+absl_synchronization
+absl_throw_delegate
+absl_time
+absl_time_zone
+absl_wyhash \ No newline at end of file
diff --git a/src/third_party/abseil-cpp-master/scripts/parse_lib_from_ninja.py b/src/third_party/abseil-cpp-master/scripts/parse_lib_from_ninja.py
new file mode 100644
index 00000000000..826a8d9f2d8
--- /dev/null
+++ b/src/third_party/abseil-cpp-master/scripts/parse_lib_from_ninja.py
@@ -0,0 +1,52 @@
+import sys
+import os
+
+with open(sys.argv[1]) as fninja:
+ content = fninja.readlines()
+
+target_libs_file = sys.argv[2]
+
+with open(target_libs_file) as ftargets:
+ target_libs = [ft.strip() for ft in ftargets.readlines()]
+for line in content:
+ if line.startswith('build absl'):
+ found_target_lib = None
+ for target_lib in target_libs:
+
+ if f'lib{target_lib}.a: CXX_STATIC_LIBRARY_LINKER' in line:
+ found_target_lib = target_lib
+ if not found_target_lib:
+ continue
+
+ tokens = line.split(' ')
+ try:
+ deps_token_index = tokens.index('||')
+ except ValueError:
+ deps_token_index = len(tokens)
+
+ raw_source_files = tokens[3:deps_token_index]
+ source_files = []
+ for raw_source in raw_source_files:
+ path_elems = raw_source.split('/')
+ path_elems.remove('CMakeFiles')
+ path_elems.remove(found_target_lib.replace('absl_','') + '.dir')
+
+ source_files.append(os.path.splitext(os.path.join('abseil-cpp', *path_elems))[0])
+ raw_libdeps = tokens[deps_token_index+1:]
+ libdeps = []
+ for raw_libdep in raw_libdeps:
+ libdeps.append(f"{os.path.splitext(os.path.basename(raw_libdep))[0][3:]}")
+
+ scons_out = (f"""\
+env.Library(
+ target='{found_target_lib}',
+ source=[
+{os.linesep.join([f" '{source}'," for source in source_files])}
+ ],
+ LIBDEPS=[
+{os.linesep.join([f" '{libdep}'," for libdep in sorted(libdeps)])}
+ ]
+)
+"""
+ )
+ print(scons_out)
diff --git a/src/third_party/gperftools/SConscript b/src/third_party/gperftools/SConscript
index 21ec1fb90f0..5e41c8c1be6 100644
--- a/src/third_party/gperftools/SConscript
+++ b/src/third_party/gperftools/SConscript
@@ -77,7 +77,8 @@ if env.TargetOSIs('windows'):
# warning C4141: 'inline': used more than once
# warning C4305: 'argument': truncation from 'ssize_t' to 'double'
- env.Append(CXXFLAGS=["/wd4141", "/wd4305"])
+ # warning C4003: not enough arguments for function-like macro invocation
+ env.Append(CXXFLAGS=["/wd4141", "/wd4305", '/wd4003'])
else:
files += [