summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Moody <daniel.moody@mongodb.com>2022-10-03 09:18:19 -0500
committerDaniel Moody <daniel.moody@mongodb.com>2022-10-03 13:19:59 -0500
commita920ce544c6c343abaed1c1b7eefd3baa3f9dd0d (patch)
treeffcd5d7f90273296bae19c06e555cfad12ec66f7
parentde38a0768992b14b13a010f80a350bc5f7f1d942 (diff)
downloadmongo-a920ce544c6c343abaed1c1b7eefd3baa3f9dd0d.tar.gz
SERVER-68365 finishing up integration
-rw-r--r--SConstruct16
-rw-r--r--site_scons/site_tools/ninja.py35
-rw-r--r--site_scons/site_tools/protobuf_compiler.py370
-rw-r--r--src/third_party/SConscript29
-rw-r--r--src/third_party/abseil-cpp-master/SConscript1197
-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/cares/SConscript95
-rw-r--r--src/third_party/gperftools/SConscript6
-rw-r--r--src/third_party/grpc/SConscript918
-rw-r--r--src/third_party/grpc/greeter_server.h46
-rw-r--r--src/third_party/grpc/grpc_source_test.cpp59
-rw-r--r--src/third_party/protobuf/SConscript247
-rw-r--r--src/third_party/re2/SConscript47
-rw-r--r--src/third_party/unwind/SConscript3
-rw-r--r--src/third_party/zlib/SConscript3
17 files changed, 3174 insertions, 36 deletions
diff --git a/SConstruct b/SConstruct
index 1269dacbdc8..e040713d8ed 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1329,6 +1329,18 @@ env_vars.Add(
)
env_vars.Add(
+ 'PROTOC',
+ default="$DESTDIR/bin/protobuf_compiler$PROGSUFFIX",
+ help='Path to protobuf compiler.',
+)
+
+env_vars.Add(
+ 'PROTOC_GRPC_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 +2020,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"):
@@ -5307,6 +5320,7 @@ if get_option('ninja') != 'disabled':
.format(env['ICECREAM_VERSION']))
ninja_builder = Tool("ninja")
+
env["NINJA_BUILDDIR"] = env.Dir("$NINJA_BUILDDIR")
ninja_builder.generate(env)
@@ -5527,6 +5541,8 @@ if get_option('ninja') != 'disabled':
env['NINJA_GENERATED_SOURCE_ALIAS_NAME'] = 'generated-sources'
+env.Tool('protobuf_compiler')
+
if get_option('separate-debug') == "on" or env.TargetOSIs("windows"):
# The current ninja builder can't handle --separate-debug on non-Windows platforms
diff --git a/site_scons/site_tools/ninja.py b/site_scons/site_tools/ninja.py
index a55205fc612..9029168fe02 100644
--- a/site_scons/site_tools/ninja.py
+++ b/site_scons/site_tools/ninja.py
@@ -810,15 +810,21 @@ 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 = build['rule'] != 'INSTALL'
+ if build['outputs']:
+ if self.env.Entry(build['outputs'][0]).get_build_env().get('NINJA_GENSOURCE_INDEPENDENT'):
+ depends_on_gen_source = False
+
+ 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()
@@ -1134,8 +1140,8 @@ def gen_get_response_file_command(env, rule, tool, tool_is_dynamic=False, custom
# Add 1 so we always keep the actual tool inside of cmd
tool_idx = cmd_list.index(tool_command) + 1
except ValueError:
- raise Exception("Could not find tool {} in {} generated from {}".format(
- tool, cmd_list, get_comstr(env, action, targets, sources)))
+ raise Exception("Could not find tool {}({}) in {} generated from {}".format(
+ tool, tool_command, cmd_list, get_comstr(env, action, targets, sources)))
cmd, rsp_content = cmd_list[:tool_idx], cmd_list[tool_idx:]
rsp_content = " ".join(rsp_content)
@@ -1360,7 +1366,7 @@ def register_custom_rule_mapping(env, pre_subst_string, rule):
def register_custom_rule(env, rule, command, description="", deps=None, pool=None,
- use_depfile=False, use_response_file=False, response_file_content="$rspc",
+ use_depfile=False, depfile=None, use_response_file=False, response_file_content="$rspc",
restat=False):
"""Allows specification of Ninja rules from inside SCons files."""
rule_obj = {
@@ -1369,7 +1375,10 @@ def register_custom_rule(env, rule, command, description="", deps=None, pool=Non
}
if use_depfile:
- rule_obj["depfile"] = os.path.join(get_path(env['NINJA_BUILDDIR']), '$out.depfile')
+ if depfile:
+ rule_obj["depfile"] = depfile
+ else:
+ rule_obj["depfile"] = os.path.join(get_path(env['NINJA_BUILDDIR']), '$out.depfile')
if deps is not None:
rule_obj["deps"] = deps
diff --git a/site_scons/site_tools/protobuf_compiler.py b/site_scons/site_tools/protobuf_compiler.py
new file mode 100644
index 00000000000..3a524ba671b
--- /dev/null
+++ b/site_scons/site_tools/protobuf_compiler.py
@@ -0,0 +1,370 @@
+# 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 subprocess
+import tempfile
+import contextlib
+import SCons
+
+# context manager copied from
+# https://stackoverflow.com/a/57701186/1644736
+@contextlib.contextmanager
+def temporary_filename(suffix=None):
+ """Context that introduces a temporary file.
+
+ Creates a temporary file, yields its name, and upon context exit, deletes it.
+ (In contrast, tempfile.NamedTemporaryFile() provides a 'file' object and
+ deletes the file as soon as that file object is closed, so the temporary file
+ cannot be safely re-opened by another library or process.)
+
+ Args:
+ suffix: desired filename extension (e.g. '.mp4').
+
+ Yields:
+ The name of the temporary file.
+ """
+ try:
+ f = tempfile.NamedTemporaryFile(suffix=suffix, delete=False)
+ tmp_name = f.name
+ f.close()
+ yield tmp_name
+ finally:
+ os.unlink(tmp_name)
+
+def get_gen_type_and_dir(env, gen_type):
+ # Utility function for parsing out the gen type and desired gen dir
+ if SCons.Util.is_String(gen_type):
+ gen_out_dir = "."
+ elif SCons.Util.is_List(gen_type) and len(gen_type) == 1:
+ gen_type = gen_type[0]
+ gen_out_dir = "."
+ elif SCons.Util.is_List(gen_type) and len(gen_type) == 2:
+ gen_out_dir = gen_type[1]
+ gen_type = gen_type[0]
+ else:
+ raise ValueError(f"Invalid generation type {gen_type}, must be string of gen type, or list of gen type and gen out dir.")
+ return (gen_type, gen_out_dir)
+
+def protoc_emitter(target, source, env):
+
+ base_file_name = os.path.split(SCons.Util.splitext(str(target[0]))[0])[1]
+ new_targets = []
+
+ for gen_type in env.subst_list('$PROTOC_GEN_TYPES', target=target, source=source):
+
+ # Check for valid requested gen type.
+ gen_type, gen_out_dir = get_gen_type_and_dir(env, gen_type)
+ if gen_type not in env['_PROTOC_SUPPORTED_GEN_TYPES']:
+ raise ValueError(f"Requested protoc gen output of {gen_type}, but only {env['_PROTOC_SUPPORTED_GEN_TYPES']} are currenlty supported.")
+
+ # Create the targets by extensions list for this type in the desired gen dir.
+ exts = env['_PROTOC_SUPPORTED_GEN_TYPES'][gen_type]
+ new_targets += [env.Dir(gen_out_dir).File(f"{base_file_name}{ext}") for ext in exts]
+
+ # Create targets for any listed plugins.
+ plugins = env.get('PROTOC_PLUGINS', [])
+ for name in plugins:
+ out_dir = plugins[name].get('gen_out', '.')
+ exts = plugins[name].get('exts', [])
+ new_targets += [env.Dir(out_dir).File(f"{base_file_name}{ext}") for ext in exts]
+
+ # Setup the dependency file.
+ dep_file = env.File(os.path.split(source[0].get_path())[1]+".protodeps")
+ new_targets += [dep_file]
+
+ env.Alias("generated-sources", new_targets)
+
+ return new_targets, source
+
+def protoc_scanner(node, env, path):
+ deps = []
+
+ # Need to depend on the compiler and any plugins.
+ plugins = env.get('PROTOC_PLUGINS', {})
+ for name in plugins:
+ deps.append(env.File(env.subst(plugins[name].get('plugin'))))
+ deps.append(env.File("$PROTOC"))
+
+ # For scanning the proto dependencies from within the proto files themselves,
+ # there are two ways (with out writing a custom reader) to do it. One is with the
+ # output depends file and other other is with a tool the protobuf project supplies.
+ # The problem with the depends files, is you must first run the command before you can
+ # get the dependencies, which has some downsides:
+ # https://scons.org/doc/4.4.0/HTML/scons-user.html#idp105548894482512
+ #
+ # Using the reader provided by protobuf project works, but you must have access to the
+ # proto which gives this functionality.
+ #
+ # Scanners will run multiple times during the building phase, revisiting as new dependencies
+ # from the original scan are completed. Here we will use both methods, because in the case
+ # you have an existing dep file you can get more dependency information on the first scan.
+ if str(node).endswith('.protodeps'):
+ if os.path.exists(node.get_path()):
+ # This code was mostly ripped from SCons ParseDepends function
+ try:
+ with open(node.get_path(), 'r') as fp:
+ lines = SCons.Util.LogicalLines(fp).readlines()
+ except IOError:
+ pass
+ else:
+ lines = [l for l in lines if l[0] != '#']
+ for line in lines:
+ try:
+ target, depends = line.split(':', 1)
+ except (AttributeError, ValueError):
+ # Throws AttributeError if line isn't a string. Can throw
+ # ValueError if line doesn't split into two or more elements.
+ pass
+ else:
+ deps += [env.File(d) for d in depends.split()]
+
+ if os.path.exists(env.File("$PROTOC").abspath) and os.path.exists(env.File('$PROTOC_DESCRIPTOR_PROTO').abspath):
+
+ # First we generate a the command line so we can extract the proto_paths as they
+ # used for finding imported protos. Then we run the command and output the
+ # descriptor set to a file for use later. The descriptor set is output as binary data
+ # intended to be read in by other protos. In this case the second command does that
+ # and extracts the dependencies.
+ source = node.sources[0]
+ with temporary_filename() as temp_filename:
+ cmd_list, _, _ = env['BUILDERS']['Protoc'].action.process([node], [source], env, executor=None)
+
+ paths = [str(proto_path) for proto_path in cmd_list[0] if str(proto_path).startswith('--proto_path=')]
+ cmd = [env.File("$PROTOC").path] + paths + ['--include_imports', f'--descriptor_set_out={temp_filename}', source.srcnode().path]
+
+ subprocess.run(cmd)
+ with open(temp_filename) as f:
+ cmd = [env.File("$PROTOC").path] + paths + ['--decode=google.protobuf.FileDescriptorSet', str(env.File('$PROTOC_DESCRIPTOR_PROTO'))]
+
+ p = subprocess.run(cmd, stdin=f, capture_output=True)
+ for line in p.stdout.decode().splitlines():
+ if line.startswith(" name: \""):
+ file = line[len(" name: \""):-1]
+ for path in paths:
+ proto_file = os.path.join(path.replace('--proto_path=', ''), file)
+ if os.path.exists(proto_file) and proto_file != str(source.srcnode()):
+ dep_node = env.File(proto_file)
+ if dep_node not in deps:
+ deps += [env.File(proto_file)]
+ break
+
+ return sorted(deps, key=lambda dep: dep.path)
+
+protoc_scanner = SCons.Scanner.Scanner(function=protoc_scanner)
+
+def get_cmd_line_dirs(env, target, source):
+ source_dir = os.path.dirname(source[0].srcnode().path)
+ target_dir = os.path.dirname(target[0].get_path())
+
+ return target_dir, source_dir
+
+
+def gen_types(source, target, env, for_signature):
+ # This subst function is for generating the command line --proto_path and desired
+ # --TYPE_out options.
+ cmd_flags = ""
+ gen_types = env.subst_list('$PROTOC_GEN_TYPES', target=target, source=source)
+ if gen_types:
+
+ for gen_type in gen_types:
+
+ gen_type, gen_out_dir = get_gen_type_and_dir(env,gen_type)
+ exts = tuple(env['_PROTOC_SUPPORTED_GEN_TYPES'][gen_type])
+
+ gen_targets = [t for t in target if str(t).endswith(exts)]
+ if gen_targets:
+ out_dir, proto_path = get_cmd_line_dirs(env, gen_targets, source)
+ cmd_flags += f" --proto_path={proto_path} --{gen_type}_out={out_dir}"
+
+ # This depends out only works if there is at least one gen out
+ for t in target:
+ if str(t).endswith('.protodeps'):
+ cmd_flags = f'--dependency_out={t} ' + cmd_flags
+
+ return cmd_flags
+
+def gen_types_str(source, target, env, for_signature):
+ # This generates the types from the list of types requested by the user
+ # for the pretty build output message. Any invalid types are caught in the emitter.
+ gen_types = []
+ for gen_type in env.subst_list('$PROTOC_GEN_TYPES', target=target, source=source):
+ gen_type, gen_out_dir = get_gen_type_and_dir(env, gen_type)
+ gen_types += [str(gen_type)]
+
+ return ', '.join(gen_types)
+
+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.
+ plugins_cmds = []
+ plugins = env.get('PROTOC_PLUGINS', [])
+
+ for name in plugins:
+ plugin = plugins[name].get('plugin')
+ exts = plugins[name].get('exts')
+ if plugin and exts:
+ out_dir = plugins[name].get('gen_out', '.')
+ options = plugins[name].get('options', [])
+
+ # A custom out command for this plugin, options to the plugin can
+ # be passed here with colon separating
+ cmd_line = f'--{name}_out='
+ for opt in options:
+ cmd_line += f'{opt}:'
+
+ gen_targets = [t for t in target if str(t).endswith(tuple(exts))]
+ if gen_targets:
+ out_dir, proto_path = get_cmd_line_dirs(env, gen_targets, source)
+ cmd_line += out_dir
+
+ # specify the plugin binary
+ cmd_line += f' --proto_path={proto_path} --plugin=protoc-gen-{name}={env.File(plugin).path}'
+ plugins_cmds += [cmd_line]
+ else:
+ print(f"Failed to process PROTOC plugin, need valid plugin and extensions {name}: {plugins[name]}")
+
+ gen_types = env.subst_list('$PROTOC_GEN_TYPES', target=target, source=source)
+ # In the case the command did not include any standard gen types, we add a command line
+ # entry so the depends file is still written
+ if not gen_types:
+ for t in target:
+ if str(t).endswith(".protodeps"):
+ plugins_cmds += [f'--dependency_out={t}']
+
+ return ' '.join(plugins_cmds)
+
+def generate(env):
+
+ ProtocBuilder = SCons.Builder.Builder(
+ action=SCons.Action.Action("$PROTOCCOM", "$PROTOCCOMSTR"),
+ emitter=protoc_emitter,
+ src_suffix=".proto",
+ suffix=".cc",
+ target_scanner=protoc_scanner,
+ )
+
+ env.Append(SCANNERS=protoc_scanner)
+ env["BUILDERS"]["Protoc"] = ProtocBuilder
+
+ env["PROTOC"] = env.get('PROTOC', env.WhereIs('protoc'))
+ env['PROTOCCOM'] = "$PROTOC $_PROTOCPATHS $_PROTOC_GEN_TYPES $_PROTOC_PLUGINS $PROTOCFLAGS $SOURCE"
+ env['PROTOCCOMSTR'] = ("Generating $_PROTOC_GEN_TYPES_STR Protocol Buffers from ${SOURCE}"
+ if not env.Verbose() else "")
+
+ # Internal subst function vars
+ env["_PROTOC_GEN_TYPES"] = gen_types
+ env['_PROTOC_GEN_TYPES_STR'] = gen_types_str
+ env['_PROTOC_PLUGINS'] = gen_plugins
+ env['_PROTOCPATHS'] = '${_concat(PROTOPATH_PREFIX, PROTOCPATHS, PROTOPATH_SUFFIX, __env__)}'
+
+ env['PROTOPATH_PREFIX'] = '--proto_path='
+ env['PROTOPATH_SUFFIX'] = ''
+
+ # Somewhat safe cross tool dependency
+ if hasattr(env, 'NinjaGenResponseFileProvider'):
+
+ env.NinjaRule(
+ rule="PROTO",
+ command='$env$cmd',
+ description="Generating protocol buffers $out",
+ deps="gcc",
+ use_depfile=True,
+ depfile="$protodep",
+ )
+
+ def gen_protobuf_provider(env, rule, tool):
+
+ def protobuf_provider(env, node, action, targets, sources, executor=None):
+ provided_rule, variables, tool_command = env.NinjaGetGenericShellCommand(node, action, targets, sources, executor)
+
+
+ t_dirs = [os.path.dirname(t.get_path()) for t in targets]
+ print(t_dirs)
+ if len(set(t_dirs)) > 1:
+ raise SCons.Errors.BuildError(node=node, errstr="Due to limitations with ninja tool and using phonies for multiple targets, protoc must generate all generated output for a single command to the same directory.")
+ for t in targets:
+ if str(t).endswith('.protodeps'):
+ variables['protodep'] = str(t)
+ return "PROTO", variables, tool_command
+
+ return protobuf_provider
+
+ def robust_rule_mapping(var, rule, tool):
+ provider = gen_protobuf_provider(env, rule, tool)
+ env.NinjaRuleMapping("${" + var + "}", provider)
+ env.NinjaRuleMapping(env[var], provider)
+
+ robust_rule_mapping("PROTOCCOM", "PROTO", env.File("$PROTOC").path)
+
+ # TODO create variables to support other generation types, might require a more flexible
+ # builder setup
+ env["_PROTOC_SUPPORTED_GEN_TYPES"] = {
+ 'cpp': ['.pb.cc', '.pb.h']
+ }
+
+ # User facing customizable variables
+
+ # PROTOC_GEN_TYPES can be a list of strings, where
+ # each string is the gen type desired, or it could
+ # a list of lists, where each list contains first
+ # the type, the the desired output dir, if no
+ # dir is specified the scons will build it at the location
+ # of the source proto file, accounting for variant
+ # dirs. e.g.
+ # env["PROTOC_GEN_TYPES"] = [
+ # 'cpp',
+ # ['java', "$BUILD_DIR/java_gen_source"]
+ # ]
+ env["PROTOC_GEN_TYPES"] = []
+
+ # PROTOC_PLUGINS allows customization of the plugins
+ # for the command lines. It should be a dict of dicts where
+ # the keys are the names of the plugins, and the plugin must
+ # specify the plugin binary file path and a list of extensions
+ # to use on the output files. Optionally you can specify a list
+ # of options to pass the plugin and a gen out directory. e.g:
+ # env['PROTOC_PLUGINS']={
+ # 'grpc': {
+ # 'plugin': '$PROTOC_GRPC_PLUGIN',
+ # 'options': ['generate_mock_code=true'],
+ # 'gen_dir': "$BUILD_DIR/grpc_gen"
+ # 'exts': ['.grpc.pb.cc', '.grpc.pb.h'],
+ # },
+ # 'my_plugin': {
+ # 'plugin': '/usr/bin/my_custom_plugin',
+ # 'exts': ['.pb.txt'],
+ # }
+ # },
+ env['PROTOC_PLUGINS'] = {}
+
+ # This is a proto which allows dependent protos to be extracted
+ # generally this is in protobuf src tree at google/protobuf/descriptor.proto
+ env['PROTOC_DESCRIPTOR_PROTO'] = 'google/protobuf/descriptor.proto'
+
+ env['PROTOCFLAGS'] = SCons.Util.CLVar('')
+ env['PROTOCPATHS'] = SCons.Util.CLVar('')
+
+def exists(env):
+ return True
diff --git a/src/third_party/SConscript b/src/third_party/SConscript
index 8f8b559ecd0..1c133f0958b 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'], },
}
@@ -218,6 +222,7 @@ env.Alias('generated-sources', empty_source)
empty_object = env.LibraryObject(
target='third_party_shim',
source=empty_source,
+ NINJA_GENSOURCE_INDEPENDENT=True
)
@@ -287,7 +292,7 @@ if use_libunwind:
'unwind/unwind',
])
- unwindEnv.ShimLibrary(name="unwind", )
+ unwindEnv.ShimLibrary(name="unwind", NINJA_GENSOURCE_INDEPENDENT=True)
fmtEnv = env.Clone()
if use_system_version_of_library("fmt"):
@@ -353,9 +358,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")
@@ -389,7 +396,7 @@ else:
'zlib/zlib',
])
-zlibEnv.ShimLibrary(name="zlib", )
+zlibEnv.ShimLibrary(name="zlib", NINJA_GENSOURCE_INDEPENDENT=True)
zstdEnv = env.Clone()
if use_system_version_of_library("zstd"):
@@ -476,6 +483,7 @@ gperftoolsEnv.ShimLibrary(
# allowed to have public dependencies.
'lint-public-dep-allowed'
],
+ NINJA_GENSOURCE_INDEPENDENT=True,
)
stemmerEnv = env.Clone()
@@ -599,3 +607,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..21d652d3427 100644
--- a/src/third_party/abseil-cpp-master/SConscript
+++ b/src/third_party/abseil-cpp-master/SConscript
@@ -4,37 +4,1208 @@ env = env.Clone()
env.InjectThirdParty(libraries=['abseil-cpp'])
+if env.ToolchainIs('msvc'):
+ env.Append(
+ CPPDEFINES=[
+ 'NOMINMAX',
+ ],
+ CCFLAGS=[
+ ],
+ )
+
+env.Library(
+ target='absl_strerror',
+ source=[
+ '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_numeric",
+ target='absl_log_severity',
source=[
- "abseil-cpp/absl/numeric/int128.cc",
+ 'abseil-cpp/absl/base/log_severity.cc',
],
+ LIBDEPS=[
+
+ ]
)
env.Library(
- target="absl_hash",
+ target='absl_raw_logging_internal',
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/base/internal/raw_logging.cc',
],
+ LIBDEPS=[
+ 'absl_log_severity',
+ ]
)
env.Library(
- target="absl_container",
+ target='absl_exponential_biased',
source=[
- "abseil-cpp/absl/container/internal/raw_hash_set.cc",
+ 'abseil-cpp/absl/base/internal/exponential_biased.cc',
],
LIBDEPS=[
- "absl_hash",
- "absl_throw_delegate",
+
+ ]
+)
+
+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",
+ target='absl_throw_delegate',
source=[
- "abseil-cpp/absl/base/internal/throw_delegate.cc",
+ 'abseil-cpp/absl/base/internal/throw_delegate.cc',
],
- LIBDEPS=[],
+ 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_random_internal_seed_material',
+ source=[
+ '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_random_internal_randen_slow',
+ source=[
+ 'abseil-cpp/absl/random/internal/randen_slow.cc',
+ ],
+ LIBDEPS=[
+ '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_random_internal_pool_urbg',
+ source=[
+ 'abseil-cpp/absl/random/internal/pool_urbg.cc',
+ ],
+ 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',
+ ]
+)
+
+absl_strings_env = env.Clone()
+
+if 'undefined' in env.GetOption('sanitize').split(','):
+ # UBSAN causes the __muloti4 reference to be in the library. This is not defined in libgcc, so
+ # we will just opt out of this check in this third party library. Related issues below:
+ #
+ # abseil issue showing the commit it was introduced
+ # https://github.com/abseil/abseil-cpp/issues/841
+ #
+ # GCC bug saying the symbol is missing
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103034
+ #
+ # LLVM bug saying the symbol requires extra linkage
+ # https://bugs.llvm.org/show_bug.cgi?id=16404
+ absl_strings_env.Append(
+ CCFLAGS=[
+ '-fno-sanitize=signed-integer-overflow',
+ ],
+ LINKFLAGS=[
+ '-fno-sanitize=signed-integer-overflow',
+ ],
+ )
+
+absl_strings_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/cares/SConscript b/src/third_party/cares/SConscript
new file mode 100644
index 00000000000..6de8ab187b6
--- /dev/null
+++ b/src/third_party/cares/SConscript
@@ -0,0 +1,95 @@
+Import('env')
+
+cares_env = env.Clone()
+
+cares_env.Append(CPPDEFINES=[
+ ('HAVE_CONFIG_H',1),
+ ('_POSIX_C_SOURCE','199309L'),
+ 'CARES_BUILDING_LIBRARY',
+ 'c_ares_EXPORTS',
+])
+
+cares_root = cares_env.Dir(".").srcnode()
+if cares_env.ToolchainIs('msvc'):
+ cares_env.Append(
+ CCFLAGS=[
+ '/wd4996', # The POSIX name for this item is deprecated
+ ],
+ )
+
+if cares_env.TargetOSIs('darwin'):
+ cares_env.Append(
+ CPPDEFINES=[
+ '_DARWIN_C_SOURCE',
+ ],
+ )
+
+cares_platform = cares_root.Dir("platform/${TARGET_OS}_${TARGET_ARCH}")
+cares_env.Append(
+ CPPPATH=[
+ cares_platform.Dir("build/include"),
+ cares_platform.Dir("install/include"),
+ ],
+)
+
+cares_env.Library(
+ target='cares',
+ source=[
+ "dist/src/lib/ares_android.c",
+ "dist/src/lib/ares_send.c",
+ "dist/src/lib/ares_search.c",
+ "dist/src/lib/ares_writev.c",
+ "dist/src/lib/ares__close_sockets.c",
+ "dist/src/lib/ares_cancel.c",
+ "dist/src/lib/ares__read_line.c",
+ "dist/src/lib/ares__timeval.c",
+ "dist/src/lib/ares_free_string.c",
+ "dist/src/lib/ares_fds.c",
+ "dist/src/lib/ares_free_hostent.c",
+ "dist/src/lib/ares_freeaddrinfo.c",
+ "dist/src/lib/ares_destroy.c",
+ "dist/src/lib/ares_data.c",
+ "dist/src/lib/ares__get_hostent.c",
+ "dist/src/lib/ares__readaddrinfo.c",
+ "dist/src/lib/ares__parse_into_addrinfo.c",
+ "dist/src/lib/ares__sortaddrinfo.c",
+ "dist/src/lib/ares_expand_string.c",
+ "dist/src/lib/inet_net_pton.c",
+ "dist/src/lib/ares_expand_name.c",
+ "dist/src/lib/ares_getenv.c",
+ "dist/src/lib/ares_getsock.c",
+ "dist/src/lib/ares_mkquery.c",
+ "dist/src/lib/ares_library_init.c",
+ "dist/src/lib/ares_nowarn.c",
+ "dist/src/lib/bitncmp.c",
+ "dist/src/lib/ares_create_query.c",
+ "dist/src/lib/ares_llist.c",
+ "dist/src/lib/ares_gethostbyaddr.c",
+ "dist/src/lib/ares_getnameinfo.c",
+ "dist/src/lib/ares_version.c",
+ "dist/src/lib/ares_gethostbyname.c",
+ "dist/src/lib/ares_getaddrinfo.c",
+ "dist/src/lib/ares_parse_a_reply.c",
+ "dist/src/lib/ares_parse_aaaa_reply.c",
+ "dist/src/lib/ares_parse_caa_reply.c",
+ "dist/src/lib/ares_options.c",
+ "dist/src/lib/ares_parse_mx_reply.c",
+ "dist/src/lib/ares_strsplit.c",
+ "dist/src/lib/ares_timeout.c",
+ "dist/src/lib/ares_parse_naptr_reply.c",
+ "dist/src/lib/windows_port.c",
+ "dist/src/lib/ares_platform.c",
+ "dist/src/lib/ares_strcasecmp.c",
+ "dist/src/lib/ares_parse_ptr_reply.c",
+ "dist/src/lib/ares_parse_soa_reply.c",
+ "dist/src/lib/ares_parse_srv_reply.c",
+ "dist/src/lib/ares_parse_ns_reply.c",
+ "dist/src/lib/ares_init.c",
+ "dist/src/lib/ares_parse_txt_reply.c",
+ "dist/src/lib/ares_query.c",
+ "dist/src/lib/ares_strdup.c",
+ "dist/src/lib/ares_strerror.c",
+ "dist/src/lib/inet_ntop.c",
+ "dist/src/lib/ares_process.c",
+ ],
+)
diff --git a/src/third_party/gperftools/SConscript b/src/third_party/gperftools/SConscript
index 21ec1fb90f0..bd426dab0fc 100644
--- a/src/third_party/gperftools/SConscript
+++ b/src/third_party/gperftools/SConscript
@@ -9,7 +9,8 @@ Import("selected_experimental_optimizations")
env = env.Clone(
# Building with hidden visibility interferes with intercepting the
# libc allocation functions.
- DISALLOW_VISHIDDEN=True, )
+ DISALLOW_VISHIDDEN=True,
+ NINJA_GENSOURCE_INDEPENDENT=True,)
# If we don't have a frame pointer, we need to tell tcmalloc so that
# it doesn't try to select a frame pointer based unwinder like
@@ -77,7 +78,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 += [
diff --git a/src/third_party/grpc/SConscript b/src/third_party/grpc/SConscript
new file mode 100644
index 00000000000..29a839558e4
--- /dev/null
+++ b/src/third_party/grpc/SConscript
@@ -0,0 +1,918 @@
+Import('env')
+
+import os
+
+grpc_env = env.Clone()
+
+grpc_env.InjectThirdParty(libraries=['abseil-cpp', 're2', 'cares', 'protobuf', 'zlib'])
+
+if grpc_env.ToolchainIs('gcc', 'clang'):
+ grpc_env.Append(
+ CCFLAGS=[
+ '-Wno-sign-compare',
+ ],
+ )
+
+grpc_env.Append(
+ CPPDEFINES=[
+ '_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING',
+ ],
+ )
+
+if grpc_env.ToolchainIs('msvc'):
+ grpc_env.Append(
+ CCFLAGS=[
+ '/wd4334', # '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
+ '/wd4116', # unnamed type definition in parentheses
+ '/wd4146', # unary minus operator applied to unsigned type, result still unsigned
+ '/wd4715', # not all control paths return a value
+ '/wd4200', # nonstandard extension used: zero-sized array in struct/union
+ '/wd4312', # 'reinterpret_cast': conversion from 'unsigned int' to 'void *' of greater size
+ '/wd4090', # 'function': different 'const' qualifiers
+
+ ],
+ CPPDEFINES=[
+ '_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING',
+ ],
+ )
+
+grpc_root = grpc_env.Dir(".").srcnode()
+
+upb_env = grpc_env.Clone()
+upb_env.Append(
+ CPPPATH=[
+ grpc_root.Dir('dist/third_party/upb'),
+ grpc_root.Dir('dist/src/core/ext/upb-generated'),
+ grpc_root.Dir('dist/src/core/ext/upbdefs-generated'),
+ ],
+)
+
+upb_env.Library(
+ target='upb',
+ source=[
+ "dist/third_party/upb/upb/decode_fast.c",
+ "dist/third_party/upb/upb/decode.c",
+ "dist/third_party/upb/upb/def.c",
+ "dist/third_party/upb/upb/encode.c",
+ "dist/third_party/upb/upb/msg.c",
+ "dist/third_party/upb/upb/reflection.c",
+ "dist/third_party/upb/upb/table.c",
+ "dist/third_party/upb/upb/text_encode.c",
+ "dist/third_party/upb/upb/upb.c",
+ "dist/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
+ "dist/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c",
+ ],
+)
+
+address_sorting_env = grpc_env.Clone()
+address_sorting_env.Append(
+ CPPPATH=[
+ grpc_root.Dir('dist/third_party/address_sorting/include'),
+ ],
+)
+
+address_sorting_env.Library(
+ target='address_sorting',
+ source=[
+ "dist/third_party/address_sorting/address_sorting.c",
+ "dist/third_party/address_sorting/address_sorting_posix.c",
+ "dist/third_party/address_sorting/address_sorting_windows.c",
+ ],
+)
+
+grpc_env.Append(CPPPATH=[
+ grpc_root.Dir('dist'),
+ grpc_env.Dir('dist').get_path(),
+ grpc_root.Dir('dist/include'),
+ grpc_root.Dir('dist/third_party/upb'),
+ grpc_root.Dir('dist/third_party/xxhash'),
+ grpc_root.Dir('dist/src/core/ext/upb-generated'),
+ grpc_root.Dir('dist/src/core/ext/upbdefs-generated'),
+ grpc_root.Dir('dist/third_party/address_sorting/include'),
+ grpc_root.Dir('dist/third_party/address_sorting/include'),
+])
+
+protobuf_plugin_env = grpc_env.Clone(NINJA_GENSOURCE_INDEPENDENT=True)
+# This should match the default $PROTOC_GRPC_PLUGIN bin name for everything to be seamless
+# so if for some reason this name needs to change, make sure to update the default as well.
+protobuf_plugin_bin = protobuf_plugin_env.Program(
+ target='grpc_cpp_plugin',
+ source=['dist/src/compiler/cpp_plugin.cc'],
+ LIBDEPS=[
+ 'grpc_plugin_support',
+ ],
+ AIB_COMPONENT='protobuf',
+)
+
+protobuf_plugin_env.Library(
+ target='grpc_plugin_support',
+ source=[
+ 'dist/src/compiler/cpp_generator.cc',
+ 'dist/src/compiler/csharp_generator.cc',
+ 'dist/src/compiler/node_generator.cc',
+ 'dist/src/compiler/objective_c_generator.cc',
+ 'dist/src/compiler/php_generator.cc',
+ 'dist/src/compiler/python_generator.cc',
+ 'dist/src/compiler/ruby_generator.cc',
+ ],
+ LIBDEPS=[
+ '$BUILD_DIR/third_party/protobuf/protobuf',
+ '$BUILD_DIR/third_party/protobuf/protoc',
+ ],
+)
+
+gpr_env = grpc_env.Clone()
+
+# older rhel7 platforms with older glibc give a warning `__warn_memset_zero_len` which
+# can not be selectively repressed, so we are disabling all warnings for this library.
+if gpr_env['TARGET_ARCH'] in ['x86_64', 's390x', 'ppc64le']:
+ gpr_env.Append(
+ CCFLAGS=[
+ '-Wno-error',
+ ],
+ LINKFLAGS=[
+ '-Wl,--no-fatal-warnings',
+ ],
+ )
+
+gpr_env.Library(
+ target='gpr',
+ source = [
+ "dist/src/core/ext/upb-generated/google/api/annotations.upb.c",
+ "dist/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c",
+ "dist/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c",
+ "dist/src/core/ext/upb-generated/google/api/http.upb.c",
+ "dist/src/core/ext/upb-generated/google/protobuf/any.upb.c",
+ "dist/src/core/ext/upb-generated/google/protobuf/duration.upb.c",
+ "dist/src/core/ext/upb-generated/google/protobuf/empty.upb.c",
+ "dist/src/core/ext/upb-generated/google/protobuf/struct.upb.c",
+ "dist/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c",
+ "dist/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c",
+ "dist/src/core/ext/upb-generated/google/rpc/status.upb.c",
+ "dist/src/core/lib/gpr/alloc.cc",
+ "dist/src/core/lib/gpr/atm.cc",
+ "dist/src/core/lib/gpr/cpu_iphone.cc",
+ "dist/src/core/lib/gpr/cpu_linux.cc",
+ "dist/src/core/lib/gpr/cpu_posix.cc",
+ "dist/src/core/lib/gpr/cpu_windows.cc",
+ "dist/src/core/lib/gpr/env_linux.cc",
+ "dist/src/core/lib/gpr/env_posix.cc",
+ "dist/src/core/lib/gpr/env_windows.cc",
+ "dist/src/core/lib/gpr/log.cc",
+ "dist/src/core/lib/gpr/log_android.cc",
+ "dist/src/core/lib/gpr/log_linux.cc",
+ "dist/src/core/lib/gpr/log_posix.cc",
+ "dist/src/core/lib/gpr/log_windows.cc",
+ "dist/src/core/lib/gpr/murmur_hash.cc",
+ "dist/src/core/lib/gpr/string.cc",
+ "dist/src/core/lib/gpr/string_posix.cc",
+ "dist/src/core/lib/gpr/string_util_windows.cc",
+ "dist/src/core/lib/gpr/string_windows.cc",
+ "dist/src/core/lib/gpr/sync.cc",
+ "dist/src/core/lib/gpr/sync_abseil.cc",
+ "dist/src/core/lib/gpr/sync_posix.cc",
+ "dist/src/core/lib/gpr/sync_windows.cc",
+ "dist/src/core/lib/gpr/time.cc",
+ "dist/src/core/lib/gpr/time_posix.cc",
+ "dist/src/core/lib/gpr/time_precise.cc",
+ "dist/src/core/lib/gpr/time_windows.cc",
+ "dist/src/core/lib/gpr/tls_pthread.cc",
+ "dist/src/core/lib/gpr/tmpfile_msys.cc",
+ "dist/src/core/lib/gpr/tmpfile_posix.cc",
+ "dist/src/core/lib/gpr/tmpfile_windows.cc",
+ "dist/src/core/lib/gpr/wrap_memcpy.cc",
+ "dist/src/core/lib/gprpp/arena.cc",
+ "dist/src/core/lib/gprpp/examine_stack.cc",
+ "dist/src/core/lib/gprpp/fork.cc",
+ "dist/src/core/lib/gprpp/global_config_env.cc",
+ "dist/src/core/lib/gprpp/host_port.cc",
+ "dist/src/core/lib/gprpp/mpscq.cc",
+ "dist/src/core/lib/gprpp/stat_posix.cc",
+ "dist/src/core/lib/gprpp/stat_windows.cc",
+ "dist/src/core/lib/gprpp/status_helper.cc",
+ "dist/src/core/lib/gprpp/thd_posix.cc",
+ "dist/src/core/lib/gprpp/thd_windows.cc",
+ "dist/src/core/lib/gprpp/time_util.cc",
+ "dist/src/core/lib/profiling/basic_timers.cc",
+ "dist/src/core/lib/profiling/stap_timers.cc",
+ ],
+ LIBDEPS=[
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_bad_optional_access',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_base',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_civil_time',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_cord',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_debugging_internal',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_demangle_internal',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_graphcycles_internal',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_int128',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_log_severity',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_malloc_internal',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_raw_logging_internal',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_spinlock_wait',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_stacktrace',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_status',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_str_format_internal',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_strings',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_strings_internal',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_symbolize',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_synchronization',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_throw_delegate',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_time',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_time_zone',
+ 'upb',
+ ]
+)
+
+grpc_env.Library(
+ target='grpc',
+ source=[
+ "dist/src/core/ext/filters/census/grpc_context.cc",
+ "dist/src/core/ext/filters/client_channel/backend_metric.cc",
+ "dist/src/core/ext/filters/client_channel/backup_poller.cc",
+ "dist/src/core/ext/filters/client_channel/channel_connectivity.cc",
+ "dist/src/core/ext/filters/client_channel/client_channel.cc",
+ "dist/src/core/ext/filters/client_channel/client_channel_channelz.cc",
+ "dist/src/core/ext/filters/client_channel/client_channel_factory.cc",
+ "dist/src/core/ext/filters/client_channel/client_channel_plugin.cc",
+ "dist/src/core/ext/filters/client_channel/config_selector.cc",
+ "dist/src/core/ext/filters/client_channel/dynamic_filters.cc",
+ "dist/src/core/ext/filters/client_channel/global_subchannel_pool.cc",
+ "dist/src/core/ext/filters/client_channel/health/health_check_client.cc",
+ "dist/src/core/ext/filters/client_channel/http_connect_handshaker.cc",
+ "dist/src/core/ext/filters/client_channel/http_proxy.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc",
+ "dist/src/core/ext/filters/client_channel/lb_policy_registry.cc",
+ "dist/src/core/ext/filters/client_channel/local_subchannel_pool.cc",
+ "dist/src/core/ext/filters/client_channel/proxy_mapper_registry.cc",
+ "dist/src/core/ext/filters/client_channel/resolver.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc",
+ "dist/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc",
+ "dist/src/core/ext/filters/client_channel/resolver_registry.cc",
+ "dist/src/core/ext/filters/client_channel/resolver_result_parsing.cc",
+ "dist/src/core/ext/filters/client_channel/retry_filter.cc",
+ "dist/src/core/ext/filters/client_channel/retry_service_config.cc",
+ "dist/src/core/ext/filters/client_channel/retry_throttle.cc",
+ "dist/src/core/ext/filters/client_channel/server_address.cc",
+ "dist/src/core/ext/filters/client_channel/service_config.cc",
+ "dist/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc",
+ "dist/src/core/ext/filters/client_channel/service_config_parser.cc",
+ "dist/src/core/ext/filters/client_channel/subchannel.cc",
+ "dist/src/core/ext/filters/client_channel/subchannel_pool_interface.cc",
+ "dist/src/core/ext/filters/client_idle/client_idle_filter.cc",
+ "dist/src/core/ext/filters/deadline/deadline_filter.cc",
+ "dist/src/core/ext/filters/fault_injection/fault_injection_filter.cc",
+ "dist/src/core/ext/filters/fault_injection/service_config_parser.cc",
+ "dist/src/core/ext/filters/http/client/http_client_filter.cc",
+ "dist/src/core/ext/filters/http/client_authority_filter.cc",
+ "dist/src/core/ext/filters/http/http_filters_plugin.cc",
+ "dist/src/core/ext/filters/http/message_compress/message_compress_filter.cc",
+ "dist/src/core/ext/filters/http/message_compress/message_decompress_filter.cc",
+ "dist/src/core/ext/filters/http/server/http_server_filter.cc",
+ "dist/src/core/ext/filters/max_age/max_age_filter.cc",
+ "dist/src/core/ext/filters/message_size/message_size_filter.cc",
+ "dist/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc",
+ "dist/src/core/ext/filters/workarounds/workaround_utils.cc",
+ "dist/src/core/ext/transport/chttp2/alpn/alpn.cc",
+ "dist/src/core/ext/transport/chttp2/client/authority.cc",
+ "dist/src/core/ext/transport/chttp2/client/chttp2_connector.cc",
+ "dist/src/core/ext/transport/chttp2/client/insecure/channel_create.cc",
+ "dist/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc",
+ "dist/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc",
+ "dist/src/core/ext/transport/chttp2/server/chttp2_server.cc",
+ "dist/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc",
+ "dist/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc",
+ "dist/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc",
+ "dist/src/core/ext/transport/chttp2/transport/bin_decoder.cc",
+ "dist/src/core/ext/transport/chttp2/transport/bin_encoder.cc",
+ "dist/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc",
+ "dist/src/core/ext/transport/chttp2/transport/chttp2_transport.cc",
+ "dist/src/core/ext/transport/chttp2/transport/context_list.cc",
+ "dist/src/core/ext/transport/chttp2/transport/flow_control.cc",
+ "dist/src/core/ext/transport/chttp2/transport/frame_data.cc",
+ "dist/src/core/ext/transport/chttp2/transport/frame_goaway.cc",
+ "dist/src/core/ext/transport/chttp2/transport/frame_ping.cc",
+ "dist/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc",
+ "dist/src/core/ext/transport/chttp2/transport/frame_settings.cc",
+ "dist/src/core/ext/transport/chttp2/transport/frame_window_update.cc",
+ "dist/src/core/ext/transport/chttp2/transport/hpack_encoder.cc",
+ "dist/src/core/ext/transport/chttp2/transport/hpack_parser.cc",
+ "dist/src/core/ext/transport/chttp2/transport/hpack_table.cc",
+ "dist/src/core/ext/transport/chttp2/transport/http2_settings.cc",
+ "dist/src/core/ext/transport/chttp2/transport/huffsyms.cc",
+ "dist/src/core/ext/transport/chttp2/transport/incoming_metadata.cc",
+ "dist/src/core/ext/transport/chttp2/transport/parsing.cc",
+ "dist/src/core/ext/transport/chttp2/transport/stream_lists.cc",
+ "dist/src/core/ext/transport/chttp2/transport/stream_map.cc",
+ "dist/src/core/ext/transport/chttp2/transport/varint.cc",
+ "dist/src/core/ext/transport/chttp2/transport/writing.cc",
+ "dist/src/core/ext/transport/inproc/inproc_plugin.cc",
+ "dist/src/core/ext/transport/inproc/inproc_transport.cc",
+ "dist/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/annotations/resource.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/v3/http.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/v3/range.upb.c",
+ "dist/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c",
+ "dist/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c",
+ "dist/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c",
+ "dist/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c",
+ "dist/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c",
+ "dist/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c",
+ "dist/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c",
+ "dist/src/core/ext/upb-generated/udpa/annotations/security.upb.c",
+ "dist/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c",
+ "dist/src/core/ext/upb-generated/udpa/annotations/status.upb.c",
+ "dist/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c",
+ "dist/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c",
+ "dist/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c",
+ "dist/src/core/ext/upb-generated/validate/validate.upb.c",
+ "dist/src/core/ext/upb-generated/xds/core/v3/authority.upb.c",
+ "dist/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c",
+ "dist/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c",
+ "dist/src/core/ext/upb-generated/xds/core/v3/resource.upb.c",
+ "dist/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c",
+ "dist/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c",
+ "dist/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c",
+ "dist/src/core/ext/xds/certificate_provider_registry.cc",
+ "dist/src/core/ext/xds/certificate_provider_store.cc",
+ "dist/src/core/ext/xds/file_watcher_certificate_provider_factory.cc",
+ "dist/src/core/ext/xds/xds_api.cc",
+ "dist/src/core/ext/xds/xds_bootstrap.cc",
+ "dist/src/core/ext/xds/xds_certificate_provider.cc",
+ "dist/src/core/ext/xds/xds_client.cc",
+ "dist/src/core/ext/xds/xds_client_stats.cc",
+ "dist/src/core/ext/xds/xds_http_fault_filter.cc",
+ "dist/src/core/ext/xds/xds_http_filters.cc",
+ "dist/src/core/ext/xds/xds_server_config_fetcher.cc",
+ "dist/src/core/lib/address_utils/parse_address.cc",
+ "dist/src/core/lib/address_utils/sockaddr_utils.cc",
+ "dist/src/core/lib/avl/avl.cc",
+ "dist/src/core/lib/backoff/backoff.cc",
+ "dist/src/core/lib/channel/channel_args.cc",
+ "dist/src/core/lib/channel/channel_stack.cc",
+ "dist/src/core/lib/channel/channel_stack_builder.cc",
+ "dist/src/core/lib/channel/channel_trace.cc",
+ "dist/src/core/lib/channel/channelz.cc",
+ "dist/src/core/lib/channel/channelz_registry.cc",
+ "dist/src/core/lib/channel/connected_channel.cc",
+ "dist/src/core/lib/channel/handshaker.cc",
+ "dist/src/core/lib/channel/handshaker_registry.cc",
+ "dist/src/core/lib/channel/status_util.cc",
+ "dist/src/core/lib/compression/compression.cc",
+ "dist/src/core/lib/compression/compression_args.cc",
+ "dist/src/core/lib/compression/compression_internal.cc",
+ "dist/src/core/lib/compression/message_compress.cc",
+ "dist/src/core/lib/compression/stream_compression.cc",
+ "dist/src/core/lib/compression/stream_compression_gzip.cc",
+ "dist/src/core/lib/compression/stream_compression_identity.cc",
+ "dist/src/core/lib/debug/stats.cc",
+ "dist/src/core/lib/debug/stats_data.cc",
+ "dist/src/core/lib/debug/trace.cc",
+ "dist/src/core/lib/event_engine/endpoint_config.cc",
+ "dist/src/core/lib/event_engine/event_engine.cc",
+ "dist/src/core/lib/event_engine/slice_allocator.cc",
+ "dist/src/core/lib/event_engine/sockaddr.cc",
+ "dist/src/core/lib/http/format_request.cc",
+ "dist/src/core/lib/http/httpcli.cc",
+ "dist/src/core/lib/http/httpcli_security_connector.cc",
+ "dist/src/core/lib/http/parser.cc",
+ "dist/src/core/lib/iomgr/buffer_list.cc",
+ "dist/src/core/lib/iomgr/call_combiner.cc",
+ "dist/src/core/lib/iomgr/cfstream_handle.cc",
+ "dist/src/core/lib/iomgr/combiner.cc",
+ "dist/src/core/lib/iomgr/dualstack_socket_posix.cc",
+ "dist/src/core/lib/iomgr/endpoint.cc",
+ "dist/src/core/lib/iomgr/endpoint_cfstream.cc",
+ "dist/src/core/lib/iomgr/endpoint_pair_event_engine.cc",
+ "dist/src/core/lib/iomgr/endpoint_pair_posix.cc",
+ "dist/src/core/lib/iomgr/endpoint_pair_uv.cc",
+ "dist/src/core/lib/iomgr/endpoint_pair_windows.cc",
+ "dist/src/core/lib/iomgr/error.cc",
+ "dist/src/core/lib/iomgr/error_cfstream.cc",
+ "dist/src/core/lib/iomgr/ev_apple.cc",
+ "dist/src/core/lib/iomgr/ev_epoll1_linux.cc",
+ "dist/src/core/lib/iomgr/ev_epollex_linux.cc",
+ "dist/src/core/lib/iomgr/ev_poll_posix.cc",
+ "dist/src/core/lib/iomgr/ev_posix.cc",
+ "dist/src/core/lib/iomgr/ev_windows.cc",
+ "dist/src/core/lib/iomgr/event_engine/closure.cc",
+ "dist/src/core/lib/iomgr/event_engine/endpoint.cc",
+ "dist/src/core/lib/iomgr/event_engine/iomgr.cc",
+ "dist/src/core/lib/iomgr/event_engine/pollset.cc",
+ "dist/src/core/lib/iomgr/event_engine/resolved_address_internal.cc",
+ "dist/src/core/lib/iomgr/event_engine/resolver.cc",
+ "dist/src/core/lib/iomgr/event_engine/tcp.cc",
+ "dist/src/core/lib/iomgr/event_engine/timer.cc",
+ "dist/src/core/lib/iomgr/exec_ctx.cc",
+ "dist/src/core/lib/iomgr/executor.cc",
+ "dist/src/core/lib/iomgr/executor/mpmcqueue.cc",
+ "dist/src/core/lib/iomgr/executor/threadpool.cc",
+ "dist/src/core/lib/iomgr/fork_posix.cc",
+ "dist/src/core/lib/iomgr/fork_windows.cc",
+ "dist/src/core/lib/iomgr/gethostname_fallback.cc",
+ "dist/src/core/lib/iomgr/gethostname_host_name_max.cc",
+ "dist/src/core/lib/iomgr/gethostname_sysconf.cc",
+ "dist/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc",
+ "dist/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc",
+ "dist/src/core/lib/iomgr/internal_errqueue.cc",
+ "dist/src/core/lib/iomgr/iocp_windows.cc",
+ "dist/src/core/lib/iomgr/iomgr.cc",
+ "dist/src/core/lib/iomgr/iomgr_custom.cc",
+ "dist/src/core/lib/iomgr/iomgr_internal.cc",
+ "dist/src/core/lib/iomgr/iomgr_posix.cc",
+ "dist/src/core/lib/iomgr/iomgr_posix_cfstream.cc",
+ "dist/src/core/lib/iomgr/iomgr_uv.cc",
+ "dist/src/core/lib/iomgr/iomgr_windows.cc",
+ "dist/src/core/lib/iomgr/is_epollexclusive_available.cc",
+ "dist/src/core/lib/iomgr/load_file.cc",
+ "dist/src/core/lib/iomgr/lockfree_event.cc",
+ "dist/src/core/lib/iomgr/polling_entity.cc",
+ "dist/src/core/lib/iomgr/pollset.cc",
+ "dist/src/core/lib/iomgr/pollset_custom.cc",
+ "dist/src/core/lib/iomgr/pollset_set.cc",
+ "dist/src/core/lib/iomgr/pollset_set_custom.cc",
+ "dist/src/core/lib/iomgr/pollset_set_windows.cc",
+ "dist/src/core/lib/iomgr/pollset_uv.cc",
+ "dist/src/core/lib/iomgr/pollset_windows.cc",
+ "dist/src/core/lib/iomgr/resolve_address.cc",
+ "dist/src/core/lib/iomgr/resolve_address_custom.cc",
+ "dist/src/core/lib/iomgr/resolve_address_posix.cc",
+ "dist/src/core/lib/iomgr/resolve_address_windows.cc",
+ "dist/src/core/lib/iomgr/resource_quota.cc",
+ "dist/src/core/lib/iomgr/socket_factory_posix.cc",
+ "dist/src/core/lib/iomgr/socket_mutator.cc",
+ "dist/src/core/lib/iomgr/socket_utils_common_posix.cc",
+ "dist/src/core/lib/iomgr/socket_utils_linux.cc",
+ "dist/src/core/lib/iomgr/socket_utils_posix.cc",
+ "dist/src/core/lib/iomgr/socket_utils_uv.cc",
+ "dist/src/core/lib/iomgr/socket_utils_windows.cc",
+ "dist/src/core/lib/iomgr/socket_windows.cc",
+ "dist/src/core/lib/iomgr/tcp_client.cc",
+ "dist/src/core/lib/iomgr/tcp_client_cfstream.cc",
+ "dist/src/core/lib/iomgr/tcp_client_custom.cc",
+ "dist/src/core/lib/iomgr/tcp_client_posix.cc",
+ "dist/src/core/lib/iomgr/tcp_client_windows.cc",
+ "dist/src/core/lib/iomgr/tcp_custom.cc",
+ "dist/src/core/lib/iomgr/tcp_posix.cc",
+ "dist/src/core/lib/iomgr/tcp_server.cc",
+ "dist/src/core/lib/iomgr/tcp_server_custom.cc",
+ "dist/src/core/lib/iomgr/tcp_server_posix.cc",
+ "dist/src/core/lib/iomgr/tcp_server_utils_posix_common.cc",
+ "dist/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc",
+ "dist/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc",
+ "dist/src/core/lib/iomgr/tcp_server_windows.cc",
+ "dist/src/core/lib/iomgr/tcp_uv.cc",
+ "dist/src/core/lib/iomgr/tcp_windows.cc",
+ "dist/src/core/lib/iomgr/time_averaged_stats.cc",
+ "dist/src/core/lib/iomgr/timer.cc",
+ "dist/src/core/lib/iomgr/timer_custom.cc",
+ "dist/src/core/lib/iomgr/timer_generic.cc",
+ "dist/src/core/lib/iomgr/timer_heap.cc",
+ "dist/src/core/lib/iomgr/timer_manager.cc",
+ "dist/src/core/lib/iomgr/timer_uv.cc",
+ "dist/src/core/lib/iomgr/udp_server.cc",
+ "dist/src/core/lib/iomgr/unix_sockets_posix.cc",
+ "dist/src/core/lib/iomgr/unix_sockets_posix_noop.cc",
+ "dist/src/core/lib/iomgr/wakeup_fd_eventfd.cc",
+ "dist/src/core/lib/iomgr/wakeup_fd_nospecial.cc",
+ "dist/src/core/lib/iomgr/wakeup_fd_pipe.cc",
+ "dist/src/core/lib/iomgr/wakeup_fd_posix.cc",
+ "dist/src/core/lib/iomgr/work_serializer.cc",
+ "dist/src/core/lib/json/json_reader.cc",
+ "dist/src/core/lib/json/json_util.cc",
+ "dist/src/core/lib/json/json_writer.cc",
+ "dist/src/core/lib/matchers/matchers.cc",
+ "dist/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc",
+ "dist/src/core/lib/security/authorization/evaluate_args.cc",
+ "dist/src/core/lib/security/context/security_context.cc",
+ "dist/src/core/lib/security/credentials/alts/alts_credentials.cc",
+ "dist/src/core/lib/security/credentials/alts/check_gcp_environment.cc",
+ "dist/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc",
+ "dist/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc",
+ "dist/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc",
+ "dist/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc",
+ "dist/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc",
+ "dist/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc",
+ "dist/src/core/lib/security/credentials/composite/composite_credentials.cc",
+ "dist/src/core/lib/security/credentials/credentials.cc",
+ "dist/src/core/lib/security/credentials/credentials_metadata.cc",
+ "dist/src/core/lib/security/credentials/external/aws_external_account_credentials.cc",
+ "dist/src/core/lib/security/credentials/external/aws_request_signer.cc",
+ "dist/src/core/lib/security/credentials/external/external_account_credentials.cc",
+ "dist/src/core/lib/security/credentials/external/file_external_account_credentials.cc",
+ "dist/src/core/lib/security/credentials/external/url_external_account_credentials.cc",
+ "dist/src/core/lib/security/credentials/fake/fake_credentials.cc",
+ "dist/src/core/lib/security/credentials/google_default/credentials_generic.cc",
+ "dist/src/core/lib/security/credentials/google_default/google_default_credentials.cc",
+ "dist/src/core/lib/security/credentials/iam/iam_credentials.cc",
+ "dist/src/core/lib/security/credentials/insecure/insecure_credentials.cc",
+ "dist/src/core/lib/security/credentials/jwt/json_token.cc",
+ "dist/src/core/lib/security/credentials/jwt/jwt_credentials.cc",
+ "dist/src/core/lib/security/credentials/jwt/jwt_verifier.cc",
+ "dist/src/core/lib/security/credentials/local/local_credentials.cc",
+ "dist/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc",
+ "dist/src/core/lib/security/credentials/plugin/plugin_credentials.cc",
+ "dist/src/core/lib/security/credentials/ssl/ssl_credentials.cc",
+ "dist/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc",
+ "dist/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc",
+ "dist/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc",
+ "dist/src/core/lib/security/credentials/tls/tls_credentials.cc",
+ "dist/src/core/lib/security/credentials/tls/tls_utils.cc",
+ "dist/src/core/lib/security/credentials/xds/xds_credentials.cc",
+ "dist/src/core/lib/security/security_connector/alts/alts_security_connector.cc",
+ "dist/src/core/lib/security/security_connector/fake/fake_security_connector.cc",
+ "dist/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc",
+ "dist/src/core/lib/security/security_connector/load_system_roots_fallback.cc",
+ "dist/src/core/lib/security/security_connector/load_system_roots_linux.cc",
+ "dist/src/core/lib/security/security_connector/local/local_security_connector.cc",
+ "dist/src/core/lib/security/security_connector/security_connector.cc",
+ "dist/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc",
+ "dist/src/core/lib/security/security_connector/ssl_utils.cc",
+ "dist/src/core/lib/security/security_connector/ssl_utils_config.cc",
+ "dist/src/core/lib/security/security_connector/tls/tls_security_connector.cc",
+ "dist/src/core/lib/security/transport/client_auth_filter.cc",
+ "dist/src/core/lib/security/transport/secure_endpoint.cc",
+ "dist/src/core/lib/security/transport/security_handshaker.cc",
+ "dist/src/core/lib/security/transport/server_auth_filter.cc",
+ "dist/src/core/lib/security/transport/tsi_error.cc",
+ "dist/src/core/lib/security/util/json_util.cc",
+ "dist/src/core/lib/slice/b64.cc",
+ "dist/src/core/lib/slice/percent_encoding.cc",
+ "dist/src/core/lib/slice/slice.cc",
+ "dist/src/core/lib/slice/slice_buffer.cc",
+ "dist/src/core/lib/slice/slice_intern.cc",
+ "dist/src/core/lib/slice/slice_string_helpers.cc",
+ "dist/src/core/lib/surface/api_trace.cc",
+ "dist/src/core/lib/surface/byte_buffer.cc",
+ "dist/src/core/lib/surface/byte_buffer_reader.cc",
+ "dist/src/core/lib/surface/call.cc",
+ "dist/src/core/lib/surface/call_details.cc",
+ "dist/src/core/lib/surface/call_log_batch.cc",
+ "dist/src/core/lib/surface/channel.cc",
+ "dist/src/core/lib/surface/channel_init.cc",
+ "dist/src/core/lib/surface/channel_ping.cc",
+ "dist/src/core/lib/surface/channel_stack_type.cc",
+ "dist/src/core/lib/surface/completion_queue.cc",
+ "dist/src/core/lib/surface/completion_queue_factory.cc",
+ "dist/src/core/lib/surface/event_string.cc",
+ "dist/src/core/lib/surface/init.cc",
+ "dist/src/core/lib/surface/init_secure.cc",
+ "dist/src/core/lib/surface/lame_client.cc",
+ "dist/src/core/lib/surface/metadata_array.cc",
+ "dist/src/core/lib/surface/server.cc",
+ "dist/src/core/lib/surface/validate_metadata.cc",
+ "dist/src/core/lib/surface/version.cc",
+ "dist/src/core/lib/transport/authority_override.cc",
+ "dist/src/core/lib/transport/bdp_estimator.cc",
+ "dist/src/core/lib/transport/byte_stream.cc",
+ "dist/src/core/lib/transport/connectivity_state.cc",
+ "dist/src/core/lib/transport/error_utils.cc",
+ "dist/src/core/lib/transport/metadata.cc",
+ "dist/src/core/lib/transport/metadata_batch.cc",
+ "dist/src/core/lib/transport/pid_controller.cc",
+ "dist/src/core/lib/transport/static_metadata.cc",
+ "dist/src/core/lib/transport/status_conversion.cc",
+ "dist/src/core/lib/transport/status_metadata.cc",
+ "dist/src/core/lib/transport/timeout_encoding.cc",
+ "dist/src/core/lib/transport/transport.cc",
+ "dist/src/core/lib/transport/transport_op_string.cc",
+ "dist/src/core/lib/uri/uri_parser.cc",
+ "dist/src/core/plugin_registry/grpc_plugin_registry.cc",
+ "dist/src/core/tsi/alts/crypt/aes_gcm.cc",
+ "dist/src/core/tsi/alts/crypt/gsec.cc",
+ "dist/src/core/tsi/alts/frame_protector/alts_counter.cc",
+ "dist/src/core/tsi/alts/frame_protector/alts_crypter.cc",
+ "dist/src/core/tsi/alts/frame_protector/alts_frame_protector.cc",
+ "dist/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc",
+ "dist/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc",
+ "dist/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc",
+ "dist/src/core/tsi/alts/frame_protector/frame_handler.cc",
+ "dist/src/core/tsi/alts/handshaker/alts_handshaker_client.cc",
+ "dist/src/core/tsi/alts/handshaker/alts_shared_resource.cc",
+ "dist/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc",
+ "dist/src/core/tsi/alts/handshaker/alts_tsi_utils.cc",
+ "dist/src/core/tsi/alts/handshaker/transport_security_common_api.cc",
+ "dist/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc",
+ "dist/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc",
+ "dist/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc",
+ "dist/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc",
+ "dist/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc",
+ "dist/src/core/tsi/fake_transport_security.cc",
+ "dist/src/core/tsi/local_transport_security.cc",
+ "dist/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc",
+ "dist/src/core/tsi/ssl/session_cache/ssl_session_cache.cc",
+ "dist/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc",
+ "dist/src/core/tsi/ssl_transport_security.cc",
+ "dist/src/core/tsi/transport_security.cc",
+ "dist/src/core/tsi/transport_security_grpc.cc",
+ ],
+ LIBDEPS=[
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_bad_variant_access',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_city',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_exponential_biased',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_hash',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_hashtablez_sampler',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_raw_hash_set',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_statusor',
+ '$BUILD_DIR/third_party/abseil-cpp-master/absl_wyhash',
+ '$BUILD_DIR/third_party/cares/cares',
+ '$BUILD_DIR/third_party/re2/re2',
+ '$BUILD_DIR/third_party/shim_zlib',
+ 'address_sorting',
+ 'gpr',
+ ],
+)
+
+grpc_env.Library(
+ target='grpc++',
+ source=[
+ 'dist/src/cpp/client/channel_cc.cc',
+ 'dist/src/cpp/client/client_callback.cc',
+ 'dist/src/cpp/client/client_context.cc',
+ 'dist/src/cpp/client/client_interceptor.cc',
+ 'dist/src/cpp/client/create_channel.cc',
+ 'dist/src/cpp/client/create_channel_internal.cc',
+ 'dist/src/cpp/client/create_channel_posix.cc',
+ 'dist/src/cpp/client/credentials_cc.cc',
+ 'dist/src/cpp/client/insecure_credentials.cc',
+ 'dist/src/cpp/client/secure_credentials.cc',
+ 'dist/src/cpp/client/xds_credentials.cc',
+ 'dist/src/cpp/codegen/codegen_init.cc',
+ 'dist/src/cpp/common/alarm.cc',
+ 'dist/src/cpp/common/auth_property_iterator.cc',
+ 'dist/src/cpp/common/channel_arguments.cc',
+ 'dist/src/cpp/common/channel_filter.cc',
+ 'dist/src/cpp/common/completion_queue_cc.cc',
+ 'dist/src/cpp/common/core_codegen.cc',
+ 'dist/src/cpp/common/resource_quota_cc.cc',
+ 'dist/src/cpp/common/rpc_method.cc',
+ 'dist/src/cpp/common/secure_auth_context.cc',
+ 'dist/src/cpp/common/secure_channel_arguments.cc',
+ 'dist/src/cpp/common/secure_create_auth_context.cc',
+ 'dist/src/cpp/common/tls_certificate_provider.cc',
+ 'dist/src/cpp/common/tls_credentials_options.cc',
+ 'dist/src/cpp/common/tls_credentials_options_util.cc',
+ 'dist/src/cpp/common/validate_service_config.cc',
+ 'dist/src/cpp/common/version_cc.cc',
+ 'dist/src/cpp/server/async_generic_service.cc',
+ 'dist/src/cpp/server/channel_argument_option.cc',
+ 'dist/src/cpp/server/create_default_thread_pool.cc',
+ 'dist/src/cpp/server/dynamic_thread_pool.cc',
+ 'dist/src/cpp/server/external_connection_acceptor_impl.cc',
+ 'dist/src/cpp/server/health/default_health_check_service.cc',
+ 'dist/src/cpp/server/health/health_check_service.cc',
+ 'dist/src/cpp/server/health/health_check_service_server_builder_option.cc',
+ 'dist/src/cpp/server/insecure_server_credentials.cc',
+ 'dist/src/cpp/server/secure_server_credentials.cc',
+ 'dist/src/cpp/server/server_builder.cc',
+ 'dist/src/cpp/server/server_callback.cc',
+ 'dist/src/cpp/server/server_cc.cc',
+ 'dist/src/cpp/server/server_context.cc',
+ 'dist/src/cpp/server/server_credentials.cc',
+ 'dist/src/cpp/server/server_posix.cc',
+ 'dist/src/cpp/server/xds_server_credentials.cc',
+ 'dist/src/cpp/thread_manager/thread_manager.cc',
+ 'dist/src/cpp/util/byte_buffer_cc.cc',
+ 'dist/src/cpp/util/status.cc',
+ 'dist/src/cpp/util/string_ref.cc',
+ 'dist/src/cpp/util/time_cc.cc',
+ ],
+ LIBDEPS=[
+ '$BUILD_DIR/third_party/protobuf/protobuf',
+ 'grpc',
+ ],
+)
+
+grpcxx_env = grpc_env.Clone()
+
+grpcxx_env.AppendUnique(
+ PROTOC_GEN_TYPES=['cpp'],
+ PROTOC_PLUGINS={
+ 'grpc': {
+ 'plugin': '$PROTOC_GRPC_PLUGIN',
+ 'options': ['generate_mock_code=true'],
+ 'exts': ['.grpc.pb.cc', '.grpc.pb.h'],
+ },
+ },
+ CPPPATH=[grpcxx_env.Dir('.')]
+)
+
+lib_node = grpcxx_env.Library(
+ target='grpc++_reflection',
+ source=[
+ 'dist/src/cpp/ext/proto_server_reflection.cc',
+ 'dist/src/cpp/ext/proto_server_reflection_plugin.cc',
+ 'dist/src/proto/grpc/reflection/v1alpha/reflection.proto',
+ ],
+ LIBDEPS=[
+ 'grpc++',
+ ],
+)
+
+grpc_unittest_env = grpcxx_env.Clone()
+grpc_unittest_env.InjectThirdParty(libraries=['fmt', 'variant', 'boost', 'safeint'])
+grpc_unittest_env.Append(
+ CPPPATH=[
+ '#src',
+ '$BUILD_DIR',
+ ],
+)
+
+grpc_unittest_env.CppUnitTest(
+ target='grpc_lib_test',
+ source=[
+ 'grpc_source_test.cpp',
+ 'dist/examples/protos/helloworld.proto',
+ 'dist/examples/protos/keyvaluestore.proto',
+ ],
+ LIBDEPS=[
+ '$BUILD_DIR/mongo/base',
+ 'grpc++_reflection',
+ ],
+ SYSLIBDEPS=[
+ 'ssl',
+ 'crypto',
+ ],
+)
+
diff --git a/src/third_party/grpc/greeter_server.h b/src/third_party/grpc/greeter_server.h
new file mode 100644
index 00000000000..dd13d0f115e
--- /dev/null
+++ b/src/third_party/grpc/greeter_server.h
@@ -0,0 +1,46 @@
+/*
+ *
+ * Copyright 2015 gRPC 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
+ *
+ * http://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 <iostream>
+#include <memory>
+#include <string>
+
+#include "grpc++/ext/proto_server_reflection_plugin.h"
+#include "grpc++/grpc++.h"
+#include "grpc++/health_check_service_interface.h"
+
+#include "helloworld.grpc.pb.h"
+
+using grpc::Server;
+using grpc::ServerBuilder;
+using grpc::ServerContext;
+using grpc::Status;
+using helloworld::Greeter;
+using helloworld::HelloReply;
+using helloworld::HelloRequest;
+
+// Logic and data behind the server's behavior.
+class GreeterServiceImpl final : public Greeter::Service {
+ Status SayHello(ServerContext* context,
+ const HelloRequest* request,
+ HelloReply* reply) override {
+ std::string prefix("Hello ");
+ reply->set_message(prefix + request->name());
+ return Status::OK;
+ }
+}; \ No newline at end of file
diff --git a/src/third_party/grpc/grpc_source_test.cpp b/src/third_party/grpc/grpc_source_test.cpp
new file mode 100644
index 00000000000..9240ae3834d
--- /dev/null
+++ b/src/third_party/grpc/grpc_source_test.cpp
@@ -0,0 +1,59 @@
+/**
+ * Copyright (C) 2022-present MongoDB, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the Server Side Public License, version 1,
+ * as published by MongoDB, Inc.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Server Side Public License for more details.
+ *
+ * You should have received a copy of the Server Side Public License
+ * along with this program. If not, see
+ * <http://www.mongodb.com/licensing/server-side-public-license>.
+ *
+ * As a special exception, the copyright holders give permission to link the
+ * code of portions of this program with the OpenSSL library under certain
+ * conditions as described in each individual source file and distribute
+ * linked combinations including the program with the OpenSSL library. You
+ * must comply with the Server Side Public License in all respects for
+ * all of the code used other than as permitted herein. If you modify file(s)
+ * with this exception, you may extend this exception to your version of the
+ * file(s), but you are not obligated to do so. If you do not wish to do so,
+ * delete this exception statement from your version. If you delete this
+ * exception statement from all source files in the program, then also delete
+ * it in the license file.
+ */
+
+
+
+#include <cstdarg>
+#include <iostream>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "mongo/unittest/unittest.h"
+#include "greeter_server.h"
+
+using namespace mongo;
+
+TEST(GrpcLibraryIntegration, StartServer) {
+ std::string server_address("127.0.0.1:50051");
+ GreeterServiceImpl service;
+
+ grpc::EnableDefaultHealthCheckService(true);
+ grpc::reflection::InitProtoReflectionServerBuilderPlugin();
+ ServerBuilder builder;
+ // Listen on the given address without any authentication mechanism.
+ builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
+ // Register "service" as the instance through which we'll communicate with
+ // clients. In this case it corresponds to an *synchronous* service.
+ builder.RegisterService(&service);
+ // Finally assemble the server.
+ std::unique_ptr<Server> server(builder.BuildAndStart());
+ if (server == nullptr)
+ FAIL("Failed to start GRPC server.");
+}
diff --git a/src/third_party/protobuf/SConscript b/src/third_party/protobuf/SConscript
new file mode 100644
index 00000000000..b9dc7198b19
--- /dev/null
+++ b/src/third_party/protobuf/SConscript
@@ -0,0 +1,247 @@
+Import('env')
+
+protobuf_env = env.Clone(NINJA_GENSOURCE_INDEPENDENT=True)
+
+protobuf_env.InjectThirdParty(libraries=['zlib'])
+
+protobuf_env.Append(
+ CPPDEFINES=[
+ 'HAVE_CONFIG_H',
+ ('HAVE_ZLIB', '1'),
+ ('PIC', '1'),
+ ],
+)
+
+if protobuf_env.ToolchainIs('gcc', 'clang'):
+ protobuf_env.Append(
+ CPPDEFINES=[
+ ('HAVE_PTHREAD', '1'),
+ ],
+ CCFLAGS=[
+ '-Wno-sign-compare',
+ '-Wno-overloaded-virtual',
+ ],
+ )
+
+if protobuf_env.ToolchainIs('gcc'):
+ protobuf_env.Append(
+ CPPDEFINES=[
+ ],
+ CCFLAGS=[
+ '-Wno-stringop-overflow',
+ ],
+ )
+
+if protobuf_env.ToolchainIs('msvc'):
+ protobuf_env.Append(
+ CCFLAGS=[
+ '/wd4018', # signed/unsigned mismatch
+ '/wd4065', # switch statement contains 'default' but no 'case' labels
+ '/wd4146', # unary minus operator applied to unsigned type, result still unsigned
+ ],
+ CPPDEFINES=[
+ '_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING',
+ ],
+ )
+
+protobuf_root = protobuf_env.Dir(".").srcnode()
+protobuf_platform = protobuf_root.Dir("platform/${TARGET_OS}_${TARGET_ARCH}")
+protobuf_env.Append(
+ CPPPATH=[
+ protobuf_root.Dir("dist"),
+ protobuf_root.Dir("dist/src"),
+ ],
+)
+
+# Passing this up to the main env
+env['PROTOC_DESCRIPTOR_PROTO'] = protobuf_env.File("dist/src/google/protobuf/descriptor.proto").abspath
+
+protobuf_env.Library(
+ target='protobuf',
+ source=[
+ "dist/src/google/protobuf/stubs/bytestream.cc",
+ "dist/src/google/protobuf/stubs/common.cc",
+ "dist/src/google/protobuf/stubs/int128.cc",
+ "dist/src/google/protobuf/io/io_win32.cc",
+ "dist/src/google/protobuf/stubs/status.cc",
+ "dist/src/google/protobuf/stubs/statusor.cc",
+ "dist/src/google/protobuf/stubs/stringpiece.cc",
+ "dist/src/google/protobuf/stubs/stringprintf.cc",
+ "dist/src/google/protobuf/stubs/structurally_valid.cc",
+ "dist/src/google/protobuf/stubs/strutil.cc",
+ "dist/src/google/protobuf/stubs/time.cc",
+ "dist/src/google/protobuf/any_lite.cc",
+ "dist/src/google/protobuf/arena.cc",
+ "dist/src/google/protobuf/arenastring.cc",
+ "dist/src/google/protobuf/generated_enum_util.cc",
+ "dist/src/google/protobuf/extension_set.cc",
+ "dist/src/google/protobuf/generated_message_util.cc",
+ "dist/src/google/protobuf/generated_message_table_driven_lite.cc",
+ "dist/src/google/protobuf/implicit_weak_message.cc",
+ "dist/src/google/protobuf/map.cc",
+ "dist/src/google/protobuf/message_lite.cc",
+ "dist/src/google/protobuf/parse_context.cc",
+ "dist/src/google/protobuf/repeated_field.cc",
+ "dist/src/google/protobuf/wire_format_lite.cc",
+ "dist/src/google/protobuf/io/coded_stream.cc",
+ "dist/src/google/protobuf/io/strtod.cc",
+ "dist/src/google/protobuf/io/zero_copy_stream.cc",
+ "dist/src/google/protobuf/io/zero_copy_stream_impl.cc",
+ "dist/src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
+ "dist/src/google/protobuf/any.pb.cc",
+ "dist/src/google/protobuf/api.pb.cc",
+ "dist/src/google/protobuf/any.cc",
+ "dist/src/google/protobuf/descriptor.cc",
+ "dist/src/google/protobuf/descriptor_database.cc",
+ "dist/src/google/protobuf/descriptor.pb.cc",
+ "dist/src/google/protobuf/duration.pb.cc",
+ "dist/src/google/protobuf/dynamic_message.cc",
+ "dist/src/google/protobuf/empty.pb.cc",
+ "dist/src/google/protobuf/extension_set_heavy.cc",
+ "dist/src/google/protobuf/field_mask.pb.cc",
+ "dist/src/google/protobuf/generated_message_reflection.cc",
+ "dist/src/google/protobuf/generated_message_table_driven.cc",
+ "dist/src/google/protobuf/map_field.cc",
+ "dist/src/google/protobuf/message.cc",
+ "dist/src/google/protobuf/reflection_ops.cc",
+ "dist/src/google/protobuf/service.cc",
+ "dist/src/google/protobuf/source_context.pb.cc",
+ "dist/src/google/protobuf/struct.pb.cc",
+ "dist/src/google/protobuf/stubs/substitute.cc",
+ "dist/src/google/protobuf/text_format.cc",
+ "dist/src/google/protobuf/timestamp.pb.cc",
+ "dist/src/google/protobuf/type.pb.cc",
+ "dist/src/google/protobuf/unknown_field_set.cc",
+ "dist/src/google/protobuf/wire_format.cc",
+ "dist/src/google/protobuf/wrappers.pb.cc",
+ "dist/src/google/protobuf/io/gzip_stream.cc",
+ "dist/src/google/protobuf/io/printer.cc",
+ "dist/src/google/protobuf/io/tokenizer.cc",
+ "dist/src/google/protobuf/compiler/importer.cc",
+ "dist/src/google/protobuf/compiler/parser.cc",
+ "dist/src/google/protobuf/util/delimited_message_util.cc",
+ "dist/src/google/protobuf/util/field_comparator.cc",
+ "dist/src/google/protobuf/util/field_mask_util.cc",
+ "dist/src/google/protobuf/util/internal/datapiece.cc",
+ "dist/src/google/protobuf/util/internal/default_value_objectwriter.cc",
+ "dist/src/google/protobuf/util/internal/error_listener.cc",
+ "dist/src/google/protobuf/util/internal/field_mask_utility.cc",
+ "dist/src/google/protobuf/util/internal/json_escaping.cc",
+ "dist/src/google/protobuf/util/internal/json_objectwriter.cc",
+ "dist/src/google/protobuf/util/internal/json_stream_parser.cc",
+ "dist/src/google/protobuf/util/internal/object_writer.cc",
+ "dist/src/google/protobuf/util/internal/protostream_objectsource.cc",
+ "dist/src/google/protobuf/util/internal/protostream_objectwriter.cc",
+ "dist/src/google/protobuf/util/internal/proto_writer.cc",
+ "dist/src/google/protobuf/util/internal/type_info.cc",
+ "dist/src/google/protobuf/util/internal/type_info_test_helper.cc",
+ "dist/src/google/protobuf/util/internal/utility.cc",
+ "dist/src/google/protobuf/util/json_util.cc",
+ "dist/src/google/protobuf/util/message_differencer.cc",
+ "dist/src/google/protobuf/util/time_util.cc",
+ "dist/src/google/protobuf/util/type_resolver_util.cc",
+ ],
+ LIBDEPS=[
+ '$BUILD_DIR/third_party/shim_zlib',
+ ],
+)
+
+protobuf_env.Library(
+ target='protoc',
+ source=[
+ "dist/src/google/protobuf/compiler/code_generator.cc",
+ "dist/src/google/protobuf/compiler/command_line_interface.cc",
+ "dist/src/google/protobuf/compiler/plugin.cc",
+ "dist/src/google/protobuf/compiler/plugin.pb.cc",
+ "dist/src/google/protobuf/compiler/subprocess.cc",
+ "dist/src/google/protobuf/compiler/zip_writer.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_enum.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_enum_field.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_extension.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_field.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_file.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_generator.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_helpers.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_map_field.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_message.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_message_field.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_service.cc",
+ "dist/src/google/protobuf/compiler/cpp/cpp_string_field.cc",
+ "dist/src/google/protobuf/compiler/java/java_context.cc",
+ "dist/src/google/protobuf/compiler/java/java_enum.cc",
+ "dist/src/google/protobuf/compiler/java/java_enum_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_enum_field.cc",
+ "dist/src/google/protobuf/compiler/java/java_enum_field_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_extension.cc",
+ "dist/src/google/protobuf/compiler/java/java_extension_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_field.cc",
+ "dist/src/google/protobuf/compiler/java/java_file.cc",
+ "dist/src/google/protobuf/compiler/java/java_generator.cc",
+ "dist/src/google/protobuf/compiler/java/java_generator_factory.cc",
+ "dist/src/google/protobuf/compiler/java/java_helpers.cc",
+ "dist/src/google/protobuf/compiler/java/java_map_field.cc",
+ "dist/src/google/protobuf/compiler/java/java_map_field_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_message.cc",
+ "dist/src/google/protobuf/compiler/java/java_message_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_message_builder.cc",
+ "dist/src/google/protobuf/compiler/java/java_message_builder_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_message_field.cc",
+ "dist/src/google/protobuf/compiler/java/java_message_field_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_name_resolver.cc",
+ "dist/src/google/protobuf/compiler/java/java_primitive_field.cc",
+ "dist/src/google/protobuf/compiler/java/java_primitive_field_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_shared_code_generator.cc",
+ "dist/src/google/protobuf/compiler/java/java_service.cc",
+ "dist/src/google/protobuf/compiler/java/java_string_field.cc",
+ "dist/src/google/protobuf/compiler/java/java_string_field_lite.cc",
+ "dist/src/google/protobuf/compiler/java/java_doc_comment.cc",
+ "dist/src/google/protobuf/compiler/js/js_generator.cc",
+ "dist/src/google/protobuf/compiler/js/well_known_types_embed.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_enum.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_extension.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_field.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_file.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_generator.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_message.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc",
+ "dist/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc",
+ "dist/src/google/protobuf/compiler/php/php_generator.cc",
+ "dist/src/google/protobuf/compiler/python/python_generator.cc",
+ "dist/src/google/protobuf/compiler/ruby/ruby_generator.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_enum.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_enum_field.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_field_base.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_generator.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_helpers.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_map_field.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_message.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_message_field.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc",
+ "dist/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc",
+ ],
+ LIBDEPS=[
+ 'protobuf',
+ ],
+)
+
+protobuf_env.Program(
+ target='protobuf_compiler',
+ source=['dist/src/google/protobuf/compiler/main.cc'],
+ LIBDEPS=[
+ 'protobuf',
+ 'protoc',
+ ],
+ AIB_COMPONENT='protobuf',
+)
diff --git a/src/third_party/re2/SConscript b/src/third_party/re2/SConscript
new file mode 100644
index 00000000000..c6d2cd12e60
--- /dev/null
+++ b/src/third_party/re2/SConscript
@@ -0,0 +1,47 @@
+Import('env')
+
+re2_env = env.Clone()
+
+re2_root = re2_env.Dir(".").srcnode()
+re2_env.Append(CPPPATH=[re2_root.Dir("dist"),])
+
+if re2_env.ToolchainIs('gcc', 'clang'):
+ re2_env.Append(CCFLAGS=['-pthread'])
+if re2_env.ToolchainIs('msvc'):
+ re2_env.Append(
+ CPPDEFINES=[
+ 'NOMINMAX',
+ ],
+ CCFLAGS=[
+ '/wd4996', # The POSIX name for this item is deprecated
+ ],
+ )
+
+
+re2_env.Library(
+ target="re2",
+ source=[
+ "dist/re2/perl_groups.cc",
+ "dist/re2/unicode_casefold.cc",
+ "dist/re2/unicode_groups.cc",
+ "dist/re2/stringpiece.cc",
+ "dist/re2/tostring.cc",
+ "dist/re2/mimics_pcre.cc",
+ "dist/re2/simplify.cc",
+ "dist/re2/bitstate.cc",
+ "dist/re2/onepass.cc",
+ "dist/re2/prefilter.cc",
+ "dist/re2/parse.cc",
+ "dist/re2/re2.cc",
+ "dist/re2/filtered_re2.cc",
+ "dist/re2/nfa.cc",
+ "dist/re2/set.cc",
+ "dist/re2/prefilter_tree.cc",
+ "dist/re2/compile.cc",
+ "dist/re2/prog.cc",
+ "dist/re2/dfa.cc",
+ "dist/re2/regexp.cc",
+ "dist/util/rune.cc",
+ "dist/util/strutil.cc",
+ ],
+)
diff --git a/src/third_party/unwind/SConscript b/src/third_party/unwind/SConscript
index 9f4de94375b..7811f584532 100644
--- a/src/third_party/unwind/SConscript
+++ b/src/third_party/unwind/SConscript
@@ -19,7 +19,8 @@ env = env.Clone(
# breaks that. It also seems to interfere with building with the
# sanitizers, which use linker maps that reference backtrace. This
# may be an ld.gold bug.
- DISALLOW_VISHIDDEN=True, )
+ DISALLOW_VISHIDDEN=True,
+ NINJA_GENSOURCE_INDEPENDENT=True, )
unwind_root = env.Dir(".").srcnode()
unwind_platform = unwind_root.Dir("platform/${TARGET_OS}_${TARGET_ARCH}")
diff --git a/src/third_party/zlib/SConscript b/src/third_party/zlib/SConscript
index 63edb796597..52efa920e14 100644
--- a/src/third_party/zlib/SConscript
+++ b/src/third_party/zlib/SConscript
@@ -3,8 +3,7 @@
Import("env")
-env = env.Clone()
-
+env = env.Clone(NINJA_GENSOURCE_INDEPENDENT=True)
env.Append(CPPDEFINES=["HAVE_STDARG_H"])
if not env.TargetOSIs('windows'):
env.Append(CPPDEFINES=["HAVE_UNISTD_H"])