Merge branch 'upstream/master'

Change-Id: Ifca8b7f13839b643fefe0c9258a11fab75623f2a
diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000..dc7cec5
--- /dev/null
+++ b/BUILD.gn
@@ -0,0 +1,48 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/grpc:*",
+  "//third_party/tink/*",
+]
+
+group("abseil-cpp") {
+  public_deps = [ "absl" ]
+}
+
+group("absl") {
+  public_deps = [ "absl" ]
+}
+
+config("abseil_config") {
+  include_dirs = [ "//third_party/abseil-cpp" ]
+
+  cflags = [
+    # Google style does not use unsigned integers, though STL containers
+    # have unsigned types.
+    "-Wno-sign-compare",
+    "-Wno-missing-field-initializers",
+
+    "-Wno-conversion",
+
+    # TODO(fxbug.dev/42055162): This can be removed once all warning options
+    # bellow are supported by the current Fuchsia Clang toolchain.
+    "-Wno-unknown-warning-option",
+
+    # TODO: disable -Wimplicit-int-float-conversion which has been introduced
+    # in https://reviews.llvm.org/D64666 and is failing in duration.cc:190:12
+    "-Wno-implicit-int-float-conversion",
+
+    # TODO(fxbug.dev/42055286): -Warray-parameter is failing in wyhash.cc:31.
+    "-Wno-array-parameter",
+
+    # TODO(fxbug.dev/42055484): -Wdeprecated-builtins is failing in type_traits.h:293.
+    "-Wno-deprecated-builtins",
+  ]
+}
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..2647c1f
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,7 @@
+azani@google.com
+camrdale@google.com
+frousseau@google.com
+stevefung@google.com
+zmbush@google.com
+
+# COMPONENT: Cobalt
diff --git a/README.fuchsia b/README.fuchsia
new file mode 100644
index 0000000..c16078e
--- /dev/null
+++ b/README.fuchsia
@@ -0,0 +1,2 @@
+Name: Abseil - C++ Common Libraries
+License File: LICENSE
diff --git a/absl/BUILD.gn b/absl/BUILD.gn
new file mode 100644
index 0000000..04c2c34
--- /dev/null
+++ b/absl/BUILD.gn
@@ -0,0 +1,64 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+group("absl") {
+  public_deps = [
+    "algorithm",
+    "algorithm:container",
+    "base",
+    "base:atomic_hook",
+    "base:config",
+    "base:core_headers",
+    "base:dynamic_annotations",
+    "base:endian",
+    "base:log_severity",
+    "base:throw_delegate",
+    "cleanup",
+    "container:compressed_tuple",
+    "container:container_memory",
+    "container:fixed_array",
+    "container:flat_hash_map",
+    "container:hash_function_defaults",
+    "container:hash_policy_traits",
+    "container:hashtable_debug_hooks",
+    "container:hashtablez_sampler",
+    "container:have_sse",
+    "container:inlined_vector",
+    "container:layout",
+    "container:raw_hash_map",
+    "container:raw_hash_set",
+    "debugging:stacktrace",
+    "debugging:symbolize",
+    "functional:bind_front",
+    "functional:function_ref",
+    "hash",
+    "hash:city",
+    "hash:wyhash",
+    "memory",
+    "meta:type_traits",
+    "numeric:bits",
+    "numeric:int128",
+    "numeric:representation",
+    "random",
+    "status",
+    "status:statusor",
+    "strings",
+    "strings:cord",
+    "strings:str_format",
+    "synchronization:synchronization",
+    "time",
+    "types:bad_optional_access",
+    "types:bad_variant_access",
+    "types:optional",
+    "types:span",
+    "types:variant",
+    "utility",
+  ]
+}
diff --git a/absl/algorithm/BUILD.gn b/absl/algorithm/BUILD.gn
new file mode 100644
index 0000000..139a09d
--- /dev/null
+++ b/absl/algorithm/BUILD.gn
@@ -0,0 +1,26 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+# CC Library : algorithm
+source_set("algorithm") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  public = [ "algorithm.h" ]
+}
+
+# CC Library : container
+source_set("container") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  public = [ "container.h" ]
+  public_deps = [
+    ":algorithm",
+    "../base:core_headers",
+    "../meta:type_traits",
+  ]
+}
diff --git a/absl/base/BUILD.gn b/absl/base/BUILD.gn
new file mode 100644
index 0000000..0354aba
--- /dev/null
+++ b/absl/base/BUILD.gn
@@ -0,0 +1,264 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/gvisor_syscall_tests/*",
+  "//third_party/tink/*",
+]
+
+source_set("atomic_hook") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/atomic_hook.h" ]
+
+  deps = [
+    ":config",
+    ":core_headers",
+  ]
+}
+
+source_set("errno_saver") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/errno_saver.h" ]
+
+  deps = [ ":config" ]
+}
+
+source_set("log_severity") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "log_severity.cc" ]
+  public = [ "log_severity.h" ]
+
+  deps = [
+    ":config",
+    ":core_headers",
+  ]
+}
+
+source_set("raw_logging_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/raw_logging.cc" ]
+  public = [ "internal/raw_logging.h" ]
+
+  deps = [
+    ":atomic_hook",
+    ":config",
+    ":core_headers",
+    ":log_severity",
+  ]
+}
+
+source_set("spinlock_wait") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/spinlock_akaros.inc",
+    "internal/spinlock_linux.inc",
+    "internal/spinlock_posix.inc",
+    "internal/spinlock_wait.cc",
+    "internal/spinlock_win32.inc",
+  ]
+  public = [ "internal/spinlock_wait.h" ]
+
+  deps = [
+    ":base_internal",
+    ":core_headers",
+    ":errno_saver",
+  ]
+}
+
+source_set("config") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [
+    "config.h",
+    "options.h",
+    "policy_checks.h",
+  ]
+}
+
+source_set("dynamic_annotations") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/dynamic_annotations.h" ]
+  public = [ "dynamic_annotations.h" ]
+
+  deps = [
+    ":config",
+    ":core_headers",
+  ]
+}
+
+source_set("core_headers") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/thread_annotations.h" ]
+  public = [
+    "attributes.h",
+    "const_init.h",
+    "macros.h",
+    "optimization.h",
+    "port.h",
+    "thread_annotations.h",
+  ]
+
+  deps = [ ":config" ]
+}
+
+source_set("malloc_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/low_level_alloc.cc" ]
+  public = [
+    "internal/direct_mmap.h",
+    "internal/low_level_alloc.h",
+  ]
+  deps = [
+    ":base",
+    ":base_internal",
+    ":config",
+    ":core_headers",
+    ":dynamic_annotations",
+    ":raw_logging_internal",
+  ]
+}
+
+source_set("base_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [
+    "internal/hide_ptr.h",
+    "internal/identity.h",
+    "internal/inline_variable.h",
+    "internal/invoke.h",
+    "internal/scheduling_mode.h",
+  ]
+
+  deps = [
+    ":config",
+    "../meta:type_traits",
+  ]
+}
+
+source_set("base") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/cycleclock.cc",
+    "internal/spinlock.cc",
+    "internal/sysinfo.cc",
+    "internal/thread_identity.cc",
+    "internal/unscaledcycleclock.cc",
+  ]
+  public = [
+    "call_once.h",
+    "casts.h",
+    "internal/cycleclock.h",
+    "internal/low_level_scheduling.h",
+    "internal/per_thread_tls.h",
+    "internal/spinlock.h",
+    "internal/sysinfo.h",
+    "internal/thread_identity.h",
+    "internal/tsan_mutex_interface.h",
+    "internal/unscaledcycleclock.h",
+  ]
+
+  deps = [
+    ":atomic_hook",
+    ":base_internal",
+    ":config",
+    ":core_headers",
+    ":dynamic_annotations",
+    ":log_severity",
+    ":raw_logging_internal",
+    ":spinlock_wait",
+    "../meta:type_traits",
+  ]
+}
+
+source_set("throw_delegate") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/throw_delegate.cc" ]
+  public = [ "internal/throw_delegate.h" ]
+
+  deps = [
+    ":config",
+    ":raw_logging_internal",
+  ]
+}
+
+source_set("pretty_function") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/pretty_function.h" ]
+}
+
+source_set("endian") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [
+    "internal/endian.h",
+    "internal/unaligned_access.h",
+  ]
+
+  deps = [
+    ":base",
+    ":config",
+    ":core_headers",
+  ]
+}
+
+source_set("exponential_biased") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/exponential_biased.cc" ]
+  public = [ "internal/exponential_biased.h" ]
+
+  deps = [
+    ":config",
+    ":core_headers",
+  ]
+}
+
+source_set("periodic_sampler") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/periodic_sampler.cc" ]
+  public = [ "internal/periodic_sampler.h" ]
+
+  deps = [
+    ":core_headers",
+    ":exponential_biased",
+  ]
+}
+
+source_set("strerror") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/strerror.cc" ]
+  public = [ "internal/strerror.h" ]
+
+  deps = [
+    ":config",
+    ":core_headers",
+    ":errno_saver",
+  ]
+}
+
+source_set("fast_type_id") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/fast_type_id.h" ]
+
+  deps = [ ":config" ]
+}
diff --git a/absl/cleanup/BUILD.gn b/absl/cleanup/BUILD.gn
new file mode 100644
index 0000000..f595ed8
--- /dev/null
+++ b/absl/cleanup/BUILD.gn
@@ -0,0 +1,40 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("cleanup") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [
+    "cleanup.h",
+  ]
+
+  deps = [
+    ":cleanup_internal",
+    "../base:config",
+    "../base:core_headers",
+  ]
+}
+
+source_set("cleanup_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [
+    "internal/cleanup.h",
+  ]
+
+  deps = [
+    "../base:base_internal",
+    "../base:core_headers",
+    "../utility",
+  ]
+}
diff --git a/absl/container/BUILD.gn b/absl/container/BUILD.gn
new file mode 100644
index 0000000..66a537f
--- /dev/null
+++ b/absl/container/BUILD.gn
@@ -0,0 +1,292 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/gvisor_syscall_tests/*",
+  "//third_party/tink/*",
+]
+
+source_set("compressed_tuple") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/compressed_tuple.h" ]
+
+  deps = [ "../utility" ]
+}
+
+source_set("fixed_array") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "fixed_array.h" ]
+
+  deps = [
+    ":compressed_tuple",
+    "../algorithm",
+    "../base:config",
+    "../base:core_headers",
+    "../base:dynamic_annotations",
+    "../base:throw_delegate",
+    "../memory",
+  ]
+}
+
+source_set("inlined_vector_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/inlined_vector.h" ]
+
+  deps = [
+    ":compressed_tuple",
+    "../base:core_headers",
+    "../memory",
+    "../meta:type_traits",
+    "../types:span",
+  ]
+}
+
+source_set("inlined_vector") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "inlined_vector.h" ]
+
+  deps = [
+    ":inlined_vector_internal",
+    "../algorithm",
+    "../base:core_headers",
+    "../base:throw_delegate",
+    "../memory",
+  ]
+}
+
+source_set("flat_hash_map") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "flat_hash_map.h" ]
+
+  deps = [
+    ":container_memory",
+    ":hash_function_defaults",
+    ":raw_hash_map",
+    "../algorithm:container",
+    "../memory",
+  ]
+}
+source_set("flat_hash_set") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "flat_hash_set.h" ]
+
+  deps = [
+    ":container_memory",
+    ":hash_function_defaults",
+    ":raw_hash_set",
+    "../algorithm:container",
+    "../base:core_headers",
+    "../memory",
+  ]
+}
+
+source_set("node_hash_map") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "node_hash_map.h" ]
+
+  deps = [
+    ":container_memory",
+    ":hash_function_defaults",
+    ":node_hash_policy",
+    ":raw_hash_map",
+    "../algorithm:container",
+    "../memory",
+  ]
+}
+source_set("node_hash_set") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "node_hash_set.h" ]
+
+  deps = [
+    ":hash_function_defaults",
+    ":node_hash_policy",
+    ":raw_hash_set",
+    "../algorithm:container",
+    "../memory",
+  ]
+}
+source_set("container_memory") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/container_memory.h" ]
+
+  deps = [
+    "../base:config",
+    "../memory",
+    "../meta:type_traits",
+    "../utility",
+  ]
+}
+source_set("hash_function_defaults") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/hash_function_defaults.h" ]
+
+  deps = [
+    "../base:config",
+    "../hash",
+    "../strings",
+    "../strings:cord",
+  ]
+}
+
+source_set("hash_policy_traits") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/hash_policy_traits.h" ]
+
+  deps = [ "../meta:type_traits" ]
+}
+
+source_set("hashtable_debug") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/hashtable_debug.h" ]
+
+  deps = [ ":hashtable_debug_hooks" ]
+}
+
+source_set("hashtable_debug_hooks") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/hashtable_debug_hooks.h" ]
+
+  deps = [ "../base:config" ]
+}
+
+source_set("hashtablez_sampler") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/hashtablez_sampler.cc",
+    "internal/hashtablez_sampler_force_weak_definition.cc",
+  ]
+  public = [ "internal/hashtablez_sampler.h" ]
+
+  deps = [
+    ":have_sse",
+    "../base",
+    "../base:core_headers",
+    "../base:exponential_biased",
+    "../debugging:stacktrace",
+    "../memory",
+    "../synchronization",
+    "../utility",
+  ]
+}
+
+source_set("node_hash_policy") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/node_hash_policy.h" ]
+
+  deps = [ "../base:config" ]
+}
+
+source_set("raw_hash_map") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/raw_hash_map.h" ]
+
+  deps = [
+    ":container_memory",
+    ":raw_hash_set",
+    "../base:throw_delegate",
+  ]
+}
+
+source_set("have_sse") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/have_sse.h" ]
+}
+
+source_set("common") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/common.h" ]
+
+  deps = [
+    "../meta:type_traits",
+    "../types:optional",
+  ]
+}
+
+source_set("raw_hash_set") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/raw_hash_set.cc" ]
+  public = [ "internal/raw_hash_set.h" ]
+
+  deps = [
+    ":common",
+    ":compressed_tuple",
+    ":container_memory",
+    ":hash_policy_traits",
+    ":hashtable_debug_hooks",
+    ":hashtablez_sampler",
+    ":have_sse",
+    ":layout",
+    "../base:config",
+    "../base:core_headers",
+    "../base:endian",
+    "../memory",
+    "../meta:type_traits",
+    "../numeric:bits",
+    "../utility",
+  ]
+}
+
+source_set("layout") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/layout.h" ]
+
+  deps = [
+    "../base:config",
+    "../base:core_headers",
+    "../meta:type_traits",
+    "../strings",
+    "../types:span",
+    "../utility",
+  ]
+}
+
+source_set("btree") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/btree.h",
+    "internal/btree_container.h",
+  ]
+  public = [
+    "btree_map.h",
+    "btree_set.h",
+  ]
+
+  deps = [
+    ":common",
+    ":compressed_tuple",
+    ":container_memory",
+    ":layout",
+    "../base:core_headers",
+    "../base:throw_delegate",
+    "../memory",
+    "../meta:type_traits",
+    "../strings",
+    "../strings:cord",
+    "../types:compare",
+    "../utility",
+  ]
+}
diff --git a/absl/debugging/BUILD.gn b/absl/debugging/BUILD.gn
new file mode 100644
index 0000000..a5af441
--- /dev/null
+++ b/absl/debugging/BUILD.gn
@@ -0,0 +1,73 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("stacktrace") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "stacktrace.cc" ]
+  public = [ "stacktrace.h" ]
+  deps = [
+    ":debugging_internal",
+    "../base",
+    "../base:core_headers",
+  ]
+}
+source_set("symbolize") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "symbolize.cc",
+    "symbolize_elf.inc",
+    "symbolize_unimplemented.inc",
+    "symbolize_win32.inc",
+  ]
+  public = [
+    "internal/symbolize.h",
+    "symbolize.h",
+  ]
+  deps = [
+    ":debugging_internal",
+    ":demangle_internal",
+    "../base",
+    "../base:core_headers",
+    "../base:malloc_internal",
+  ]
+}
+
+source_set("demangle_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/demangle.cc" ]
+  public = [ "internal/demangle.h" ]
+  deps = [
+    "../base",
+    "../base:core_headers",
+  ]
+}
+
+source_set("debugging_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/address_is_readable.cc",
+    "internal/elf_mem_image.cc",
+    "internal/vdso_support.cc",
+  ]
+  public = [
+    "internal/address_is_readable.h",
+    "internal/elf_mem_image.h",
+    "internal/stacktrace_config.h",
+    "internal/vdso_support.h",
+  ]
+  deps = [
+    "../base",
+    "../base:dynamic_annotations",
+  ]
+}
diff --git a/absl/flags/BUILD.gn b/absl/flags/BUILD.gn
new file mode 100644
index 0000000..714fc9a
--- /dev/null
+++ b/absl/flags/BUILD.gn
@@ -0,0 +1,220 @@
+# Copyright 2021 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/gvisor_syscall_tests/*",
+  "//third_party/tink/*",
+]
+
+source_set("path_util") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  public = [ "internal/path_util.h" ]
+  deps = [
+    "../base:config",
+    "../strings",
+  ]
+}
+
+source_set("program_name") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "internal/program_name.cc" ]
+  public = [ "internal/program_name.h" ]
+  deps = [
+    ":path_util",
+    "../base:config",
+    "../base:core_headers",
+    "../strings",
+    "../synchronization",
+  ]
+}
+
+source_set("config") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "usage_config.cc" ]
+  public = [
+    "config.h",
+    "usage_config.h",
+  ]
+  deps = [
+    ":path_util",
+    ":program_name",
+    "../base:config",
+    "../base:core_headers",
+    "../strings",
+    "../synchronization",
+  ]
+}
+
+source_set("marshalling") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "marshalling.cc" ]
+  public = [ "marshalling.h" ]
+  deps = [
+    "../base:config",
+    "../base:core_headers",
+    "../base:log_severity",
+    "../strings",
+    "../strings:str_format",
+  ]
+}
+
+source_set("commandlineflag_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "internal/commandlineflag.cc" ]
+  public = [ "internal/commandlineflag.h" ]
+  deps = [
+    "../base:config",
+    "../base:fast_type_id",
+  ]
+}
+
+source_set("commandlineflag") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "commandlineflag.cc" ]
+  public = [ "commandlineflag.h" ]
+  deps = [
+    ":commandlineflag_internal",
+    "../base:config",
+    "../base:fast_type_id",
+    "../strings",
+    "../types:optional",
+  ]
+}
+
+source_set("private_handle_accessor") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "internal/private_handle_accessor.cc" ]
+  public = [ "internal/private_handle_accessor.h" ]
+  deps = [
+    ":commandlineflag",
+    ":commandlineflag_internal",
+    "../base:config",
+    "../strings",
+  ]
+}
+
+source_set("reflection") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "reflection.cc" ]
+  public = [
+    "internal/registry.h",
+    "reflection.h",
+  ]
+  deps = [
+    ":commandlineflag",
+    ":commandlineflag_internal",
+    ":config",
+    ":private_handle_accessor",
+    "../base:config",
+    "../base:core_headers",
+    "../container:flat_hash_map",
+    "../strings",
+    "../synchronization",
+  ]
+}
+
+source_set("flag_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "internal/flag.cc" ]
+  public = [
+    "internal/flag.h",
+    "internal/sequence_lock.h",
+  ]
+  deps = [
+    ":commandlineflag",
+    ":commandlineflag_internal",
+    ":config",
+    ":marshalling",
+    ":reflection",
+    "../base",
+    "../base:config",
+    "../base:core_headers",
+    "../memory",
+    "../meta:type_traits",
+    "../strings",
+    "../synchronization",
+    "../utility",
+  ]
+}
+
+source_set("flag") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "flag.cc" ]
+  public = [
+    "declare.h",
+    "flag.h",
+  ]
+  deps = [
+    ":config",
+    ":flag_internal",
+    ":reflection",
+    "../base",
+    "../base:config",
+    "../base:core_headers",
+    "../strings",
+  ]
+}
+
+source_set("usage_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "internal/usage.cc" ]
+  public = [ "internal/usage.h" ]
+  deps = [
+    ":commandlineflag",
+    ":config",
+    ":flag",
+    ":flag_internal",
+    ":path_util",
+    ":private_handle_accessor",
+    ":program_name",
+    ":reflection",
+    "../base:config",
+    "../base:core_headers",
+    "../container:flat_hash_map",
+    "../strings",
+  ]
+}
+
+source_set("usage") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "usage.cc" ]
+  public = [ "usage.h" ]
+  deps = [
+    ":usage_internal",
+    "../base:config",
+    "../base:core_headers",
+    "../strings",
+    "../synchronization",
+  ]
+}
+
+source_set("parse") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  sources = [ "parse.cc" ]
+  public = [
+    "internal/parse.h",
+    "parse.h",
+  ]
+  deps = [
+    ":commandlineflag",
+    ":commandlineflag_internal",
+    ":config",
+    ":flag",
+    ":flag_internal",
+    ":private_handle_accessor",
+    ":program_name",
+    ":reflection",
+    ":usage",
+    ":usage_internal",
+    "../base:config",
+    "../base:core_headers",
+    "../strings",
+    "../synchronization",
+  ]
+}
diff --git a/absl/functional/BUILD.gn b/absl/functional/BUILD.gn
new file mode 100644
index 0000000..e9194ea
--- /dev/null
+++ b/absl/functional/BUILD.gn
@@ -0,0 +1,36 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("bind_front") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/front_binder.h" ]
+  public = [ "bind_front.h" ]
+  deps = [
+    "../base:base_internal",
+    "../container:compressed_tuple",
+    "../meta:type_traits",
+    "../utility",
+  ]
+}
+
+source_set("function_ref") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/function_ref.h" ]
+  public = [ "function_ref.h" ]
+  deps = [
+    "../base:base_internal",
+    "../meta:type_traits",
+  ]
+}
diff --git a/absl/hash/BUILD.gn b/absl/hash/BUILD.gn
new file mode 100644
index 0000000..f086323
--- /dev/null
+++ b/absl/hash/BUILD.gn
@@ -0,0 +1,60 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("hash") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/hash.cc",
+    "internal/hash.h",
+  ]
+  public = [ "hash.h" ]
+
+  deps = [
+    ":city",
+    ":wyhash",
+    "../base:config",
+    "../base:core_headers",
+    "../base:endian",
+    "../container:fixed_array",
+    "../meta:type_traits",
+    "../numeric:int128",
+    "../strings",
+    "../types:optional",
+    "../types:variant",
+    "../utility",
+  ]
+}
+
+source_set("city") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/city.cc" ]
+  public = [ "internal/city.h" ]
+
+  deps = [
+    "../base:config",
+    "../base:core_headers",
+    "../base:endian",
+  ]
+}
+
+source_set("wyhash") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/wyhash.cc" ]
+  public = [ "internal/wyhash.h" ]
+
+  deps = [
+    "../base:config",
+    "../base:endian",
+    "../numeric:int128",
+  ]
+}
diff --git a/absl/memory/BUILD.gn b/absl/memory/BUILD.gn
new file mode 100644
index 0000000..eb48ec9
--- /dev/null
+++ b/absl/memory/BUILD.gn
@@ -0,0 +1,24 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/gvisor_syscall_tests/*",
+  "//third_party/tink/*",
+]
+
+source_set("memory") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "memory.h" ]
+
+  deps = [
+    "../base:core_headers",
+    "../meta:type_traits",
+  ]
+}
diff --git a/absl/meta/BUILD.gn b/absl/meta/BUILD.gn
new file mode 100644
index 0000000..1ef2a5c
--- /dev/null
+++ b/absl/meta/BUILD.gn
@@ -0,0 +1,20 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("type_traits") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "type_traits.h" ]
+
+  deps = [ "../base:config" ]
+}
diff --git a/absl/numeric/BUILD.gn b/absl/numeric/BUILD.gn
new file mode 100644
index 0000000..964b6d4
--- /dev/null
+++ b/absl/numeric/BUILD.gn
@@ -0,0 +1,48 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("bits") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [
+    "bits.h",
+    "internal/bits.h",
+  ]
+  deps = [
+    "../base:config",
+    "../base:core_headers",
+  ]
+}
+
+source_set("int128") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "int128.cc",
+    "int128_have_intrinsic.inc",
+    "int128_no_intrinsic.inc",
+  ]
+  public = [ "int128.h" ]
+  deps = [
+    ":bits",
+    "../base:config",
+    "../base:core_headers",
+  ]
+}
+
+source_set("representation") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/representation.h" ]
+  deps = [ "../base:config" ]
+}
diff --git a/absl/random/BUILD.gn b/absl/random/BUILD.gn
new file mode 100644
index 0000000..35d0915
--- /dev/null
+++ b/absl/random/BUILD.gn
@@ -0,0 +1,97 @@
+# Copyright 2022 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("random") {
+  public = [ "random.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":distributions",
+    ":seed_sequences",
+    "internal:nonsecure_base",
+    "internal:pcg_engine",
+    "internal:pool_urbg",
+    "internal:randen_engine",
+  ]
+}
+
+source_set("distributions") {
+  sources = [
+    "discrete_distribution.cc",
+    "gaussian_distribution.cc",
+  ]
+  public = [
+    "bernoulli_distribution.h",
+    "beta_distribution.h",
+    "discrete_distribution.h",
+    "distributions.h",
+    "exponential_distribution.h",
+    "gaussian_distribution.h",
+    "log_uniform_int_distribution.h",
+    "poisson_distribution.h",
+    "uniform_int_distribution.h",
+    "uniform_real_distribution.h",
+    "zipf_distribution.h",
+  ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    "../base:base_internal",
+    "../base:config",
+    "../base:core_headers",
+    "../meta:type_traits",
+    "../numeric:bits",
+    "../strings",
+    "internal:distribution_caller",
+    "internal:fast_uniform_bits",
+    "internal:fastmath",
+    "internal:generate_real",
+    "internal:iostream_state_saver",
+    "internal:traits",
+    "internal:uniform_helper",
+    "internal:wide_multiply",
+  ]
+}
+
+source_set("seed_gen_exception") {
+  sources = [ "seed_gen_exception.cc" ]
+  public = [ "seed_gen_exception.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [ "../base:config" ]
+}
+
+source_set("seed_sequences") {
+  sources = [ "seed_sequences.cc" ]
+  public = [ "seed_sequences.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":seed_gen_exception",
+    "../container:inlined_vector",
+    "../types:span",
+    "internal:nonsecure_base",
+    "internal:pool_urbg",
+    "internal:salted_seed_seq",
+    "internal:seed_material",
+  ]
+}
+
+source_set("bit_gen_ref") {
+  public = [ "bit_gen_ref.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":random",
+    "../base:core_headers",
+    "../base:fast_type_id",
+    "../meta:type_traits",
+    "internal:distribution_caller",
+    "internal:fast_uniform_bits",
+  ]
+}
diff --git a/absl/random/internal/BUILD.gn b/absl/random/internal/BUILD.gn
new file mode 100644
index 0000000..9359a63
--- /dev/null
+++ b/absl/random/internal/BUILD.gn
@@ -0,0 +1,239 @@
+# Copyright 2022 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("traits") {
+  public = [ "traits.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [ "../../base:config" ]
+}
+
+source_set("distribution_caller") {
+  public = [ "distribution_caller.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    "../../base:config",
+    "../../base:fast_type_id",
+    "../../utility",
+  ]
+}
+
+source_set("fast_uniform_bits") {
+  public = [ "fast_uniform_bits.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    "../../base:config",
+    "../../meta:type_traits",
+  ]
+}
+
+source_set("seed_material") {
+  sources = [ "seed_material.cc" ]
+  public = [ "seed_material.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":fast_uniform_bits",
+    "../../base:core_headers",
+    "../../base:dynamic_annotations",
+    "../../base:raw_logging_internal",
+    "../../strings",
+    "../../types:optional",
+    "../../types:span",
+  ]
+}
+
+source_set("pool_urbg") {
+  sources = [ "pool_urbg.cc" ]
+  public = [ "pool_urbg.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":randen",
+    ":seed_material",
+    ":traits",
+    "../../base",
+    "../../base:config",
+    "../../base:core_headers",
+    "../../base:endian",
+    "../../base:raw_logging_internal",
+    "../../random:seed_gen_exception",
+    "../../types:span",
+  ]
+}
+
+source_set("salted_seed_seq") {
+  public = [ "salted_seed_seq.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":seed_material",
+    "../../container:inlined_vector",
+    "../../meta:type_traits",
+    "../../types:optional",
+    "../../types:span",
+  ]
+}
+
+source_set("iostream_state_saver") {
+  public = [ "iostream_state_saver.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    "../../meta:type_traits",
+    "../../numeric:int128",
+  ]
+}
+
+source_set("generate_real") {
+  public = [ "generate_real.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":fastmath",
+    ":traits",
+    "../../meta:type_traits",
+    "../../numeric:bits",
+  ]
+}
+
+source_set("fastmath") {
+  public = [ "fastmath.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [ "../../numeric:bits" ]
+}
+
+source_set("wide_multiply") {
+  public = [ "wide_multiply.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":traits",
+    "../../base:config",
+    "../../numeric:bits",
+    "../../numeric:int128",
+  ]
+}
+
+source_set("nonsecure_base") {
+  public = [ "nonsecure_base.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":pool_urbg",
+    ":salted_seed_seq",
+    ":seed_material",
+    "../../base:core_headers",
+    "../../meta:type_traits",
+    "../../types:optional",
+    "../../types:span",
+  ]
+}
+
+source_set("pcg_engine") {
+  public = [ "pcg_engine.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":fastmath",
+    ":iostream_state_saver",
+    "../../base:config",
+    "../../meta:type_traits",
+    "../../numeric:bits",
+    "../../numeric:int128",
+  ]
+}
+
+source_set("randen_engine") {
+  public = [ "randen_engine.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":iostream_state_saver",
+    ":randen",
+    "../../base:endian",
+    "../../meta:type_traits",
+  ]
+}
+
+source_set("platform") {
+  sources = [ "randen_round_keys.cc" ]
+  public = [
+    "platform.h",
+    "randen_traits.h",
+  ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [ "../../base:config" ]
+}
+
+source_set("randen") {
+  sources = [ "randen.cc" ]
+  public = [ "randen.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":platform",
+    ":randen_hwaes",
+    ":randen_slow",
+    "../../base:raw_logging_internal",
+  ]
+}
+
+source_set("randen_slow") {
+  sources = [ "randen_slow.cc" ]
+  public = [ "randen_slow.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":platform",
+    "../../base:config",
+    "../../base:core_headers",
+    "../../base:endian",
+    "../../numeric:int128",
+  ]
+}
+
+source_set("randen_hwaes") {
+  sources = [ "randen_detect.cc" ]
+  public = [
+    "randen_detect.h",
+    "randen_hwaes.h",
+  ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":platform",
+    ":randen_hwaes_impl",
+    "../../base:config",
+  ]
+}
+
+# build with --save_temps to see assembly language output.
+source_set("randen_hwaes_impl") {
+  sources = [
+    "randen_hwaes.cc",
+    "randen_hwaes.h",
+  ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":platform",
+    "../../base:config",
+    "../../base:core_headers",
+    "../../numeric:int128",
+  ]
+}
+
+source_set("mock_helpers") {
+  public = [ "mock_helpers.h" ]
+  deps = [
+    "../../base:fast_type_id",
+    "../../types:optional",
+  ]
+}
+
+source_set("uniform_helper") {
+  public = [ "uniform_helper.h" ]
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  deps = [
+    ":traits",
+    "../../base:config",
+    "../../meta:type_traits",
+  ]
+}
diff --git a/absl/status/BUILD.gn b/absl/status/BUILD.gn
new file mode 100644
index 0000000..7d9227c
--- /dev/null
+++ b/absl/status/BUILD.gn
@@ -0,0 +1,51 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/gvisor_syscall_tests/*",
+  "//third_party/tink/*",
+]
+
+source_set("status") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  public = [
+    "status.h",
+    "status_payload_printer.h",
+  ]
+
+  sources = [
+    "internal/status_internal.h",
+    "status.cc",
+    "status_payload_printer.cc",
+  ]
+  deps = [
+    "../base:atomic_hook",
+    "../base:config",
+    "../base:core_headers",
+    "../base:raw_logging_internal",
+    "../container:inlined_vector",
+    "../debugging:stacktrace",
+    "../debugging:symbolize",
+    "../strings",
+    "../strings:cord",
+    "../strings:str_format",
+    "../types:optional",
+  ]
+}
+
+source_set("statusor") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  public = [ "statusor.h" ]
+
+  sources = [
+    "internal/statusor_internal.h",
+    "statusor.cc",
+  ]
+  deps = [ ":status" ]
+}
diff --git a/absl/strings/BUILD.gn b/absl/strings/BUILD.gn
new file mode 100644
index 0000000..779244b
--- /dev/null
+++ b/absl/strings/BUILD.gn
@@ -0,0 +1,301 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/gvisor_syscall_tests/*",
+  "//third_party/tink/*",
+]
+
+source_set("strings") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "ascii.cc",
+    "charconv.cc",
+    "escaping.cc",
+    "internal/charconv_bigint.cc",
+    "internal/charconv_bigint.h",
+    "internal/charconv_parse.cc",
+    "internal/charconv_parse.h",
+    "internal/memutil.cc",
+    "internal/memutil.h",
+    "internal/stl_type_traits.h",
+    "internal/str_join_internal.h",
+    "internal/str_split_internal.h",
+    "match.cc",
+    "numbers.cc",
+    "str_cat.cc",
+    "str_replace.cc",
+    "str_split.cc",
+    "string_view.cc",
+    "substitute.cc",
+  ]
+  public = [
+    "ascii.h",
+    "charconv.h",
+    "escaping.h",
+    "internal/string_constant.h",
+    "match.h",
+    "numbers.h",
+    "str_cat.h",
+    "str_join.h",
+    "str_replace.h",
+    "str_split.h",
+    "string_view.h",
+    "strip.h",
+    "substitute.h",
+  ]
+
+  deps = [
+    ":internal",
+    "../base",
+    "../base:config",
+    "../base:core_headers",
+    "../base:endian",
+    "../base:raw_logging_internal",
+    "../base:throw_delegate",
+    "../memory",
+    "../meta:type_traits",
+    "../numeric:bits",
+    "../numeric:int128",
+  ]
+}
+
+source_set("internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/escaping.cc",
+    "internal/ostringstream.cc",
+    "internal/utf8.cc",
+  ]
+  public = [
+    "internal/char_map.h",
+    "internal/escaping.h",
+    "internal/ostringstream.h",
+    "internal/resize_uninitialized.h",
+    "internal/utf8.h",
+  ]
+
+  deps = [
+    "../base:config",
+    "../base:core_headers",
+    "../base:endian",
+    "../base:raw_logging_internal",
+    "../meta:type_traits",
+  ]
+}
+
+source_set("cord_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/cord_internal.cc",
+    "internal/cord_rep_btree.cc",
+    "internal/cord_rep_btree_navigator.cc",
+    "internal/cord_rep_btree_reader.cc",
+    "internal/cord_rep_consume.cc",
+    "internal/cord_rep_ring.cc",
+  ]
+  public = [
+    "internal/cord_internal.h",
+    "internal/cord_rep_btree.h",
+    "internal/cord_rep_btree_navigator.h",
+    "internal/cord_rep_btree_reader.h",
+    "internal/cord_rep_consume.h",
+    "internal/cord_rep_flat.h",
+    "internal/cord_rep_ring.h",
+    "internal/cord_rep_ring_reader.h",
+  ]
+
+  deps = [
+    ":strings",
+    "../base:base_internal",
+    "../base:config",
+    "../base:core_headers",
+    "../base:endian",
+    "../base:raw_logging_internal",
+    "../base:throw_delegate",
+    "../container:compressed_tuple",
+    "../container:inlined_vector",
+    "../container:layout",
+    "../functional:function_ref",
+    "../meta:type_traits",
+    "../types:span",
+  ]
+}
+
+source_set("cordz_update_tracker") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/cordz_update_tracker.h" ]
+
+  deps = [ "../base:config" ]
+}
+
+source_set("cord") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "cord.cc" ]
+  public = [ "cord.h" ]
+
+  deps = [
+    ":cord_internal",
+    ":cordz_functions",
+    ":cordz_info",
+    ":cordz_statistics",
+    ":cordz_update_scope",
+    ":cordz_update_tracker",
+    ":internal",
+    ":str_format",
+    ":strings",
+    "../base",
+    "../base:config",
+    "../base:core_headers",
+    "../base:endian",
+    "../base:raw_logging_internal",
+    "../container:fixed_array",
+    "../container:inlined_vector",
+    "../functional:function_ref",
+    "../meta:type_traits",
+    "../types:optional",
+  ]
+}
+
+source_set("cordz_handle") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/cordz_handle.cc" ]
+  public = [ "internal/cordz_handle.h" ]
+
+  deps = [
+    "../base",
+    "../base:config",
+    "../base:raw_logging_internal",
+    "../synchronization",
+  ]
+}
+
+source_set("cordz_info") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/cordz_info.cc" ]
+  public = [ "internal/cordz_info.h" ]
+
+  deps = [
+    ":cord_internal",
+    ":cordz_functions",
+    ":cordz_handle",
+    ":cordz_statistics",
+    ":cordz_update_tracker",
+    "../base",
+    "../base:config",
+    "../base:core_headers",
+    "../base:raw_logging_internal",
+    "../container:inlined_vector",
+    "../debugging:stacktrace",
+    "../synchronization",
+    "../types:span",
+  ]
+}
+
+source_set("cordz_update_scope") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/cordz_update_scope.h" ]
+
+  deps = [
+    ":cord_internal",
+    ":cordz_info",
+    ":cordz_update_tracker",
+    "../base:config",
+    "../base:core_headers",
+  ]
+}
+
+source_set("cordz_sample_token") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/cordz_sample_token.cc" ]
+  public = [ "internal/cordz_sample_token.h" ]
+
+  deps = [
+    ":cordz_handle",
+    ":cordz_info",
+    "../base:config",
+  ]
+}
+
+source_set("cordz_functions") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/cordz_functions.cc" ]
+  public = [ "internal/cordz_functions.h" ]
+
+  deps = [
+    "../base:config",
+    "../base:core_headers",
+    "../base:exponential_biased",
+    "../base:raw_logging_internal",
+  ]
+}
+
+source_set("cordz_statistics") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "internal/cordz_statistics.h" ]
+
+  deps = [
+    ":cordz_update_tracker",
+    "../base:config",
+  ]
+}
+
+source_set("str_format") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "str_format.h" ]
+
+  deps = [ ":str_format_internal" ]
+}
+
+source_set("str_format_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "internal/str_format/arg.cc",
+    "internal/str_format/bind.cc",
+    "internal/str_format/extension.cc",
+    "internal/str_format/float_conversion.cc",
+    "internal/str_format/output.cc",
+    "internal/str_format/parser.cc",
+  ]
+  public = [
+    "internal/str_format/arg.h",
+    "internal/str_format/bind.h",
+    "internal/str_format/checker.h",
+    "internal/str_format/extension.h",
+    "internal/str_format/float_conversion.h",
+    "internal/str_format/output.h",
+    "internal/str_format/parser.h",
+  ]
+
+  deps = [
+    ":strings",
+    "../base:config",
+    "../base:core_headers",
+    "../functional:function_ref",
+    "../meta:type_traits",
+    "../numeric:bits",
+    "../numeric:int128",
+    "../numeric:representation",
+    "../types:optional",
+    "../types:span",
+  ]
+}
diff --git a/absl/synchronization/BUILD.gn b/absl/synchronization/BUILD.gn
new file mode 100644
index 0000000..b9f780e
--- /dev/null
+++ b/absl/synchronization/BUILD.gn
@@ -0,0 +1,62 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+source_set("graphcycles_internal") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/graphcycles.cc" ]
+  public = [ "internal/graphcycles.h" ]
+  deps = [
+    "../base",
+    "../base:base_internal",
+    "../base:core_headers",
+    "../base:malloc_internal",
+  ]
+  visibility = []
+  visibility += [ "../*" ]
+}
+
+source_set("synchronization") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "barrier.cc",
+    "barrier.h",
+    "blocking_counter.cc",
+    "blocking_counter.h",
+    "internal/create_thread_identity.cc",
+    "internal/create_thread_identity.h",
+    "internal/kernel_timeout.h",
+    "internal/mutex_nonprod.inc",
+    "internal/per_thread_sem.cc",
+    "internal/per_thread_sem.h",
+    "internal/waiter.cc",
+    "internal/waiter.h",
+    "mutex.cc",
+    "mutex.h",
+    "notification.cc",
+    "notification.h",
+  ]
+  deps = [
+    ":graphcycles_internal",
+    "../base",
+    "../base:base_internal",
+    "../base:config",
+    "../base:core_headers",
+    "../base:dynamic_annotations",
+    "../base:malloc_internal",
+    "../debugging:stacktrace",
+    "../debugging:symbolize",
+    "../time",
+  ]
+}
diff --git a/absl/time/BUILD.gn b/absl/time/BUILD.gn
new file mode 100644
index 0000000..08c75c2
--- /dev/null
+++ b/absl/time/BUILD.gn
@@ -0,0 +1,38 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/gvisor_syscall_tests/*",
+  "//third_party/tink/*",
+]
+
+source_set("time") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "clock.cc",
+    "duration.cc",
+    "format.cc",
+    "internal/get_current_time_chrono.inc",
+    "internal/get_current_time_posix.inc",
+    "time.cc",
+  ]
+  public = [
+    "clock.h",
+    "time.h",
+  ]
+  deps = [
+    "../base",
+    "../base:core_headers",
+    "../numeric:int128",
+    "../strings",
+    "../time/internal/cctz:civil_time",
+    "../time/internal/cctz:time_zone",
+  ]
+}
diff --git a/absl/time/internal/cctz/BUILD.gn b/absl/time/internal/cctz/BUILD.gn
new file mode 100644
index 0000000..b46b019
--- /dev/null
+++ b/absl/time/internal/cctz/BUILD.gn
@@ -0,0 +1,46 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Please do not add more entries to this list. We plan to remove
+# abseil-cpp from the Fuchsia platform source tree once cobalt
+# moves out-of-tree.
+visibility = [ "//third_party/abseil-cpp/*" ]
+
+source_set("civil_time") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "src/civil_time_detail.cc" ]
+  public = [
+    "include/cctz/civil_time.h",
+    "include/cctz/civil_time_detail.h",
+  ]
+}
+
+source_set("time_zone") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "src/time_zone_fixed.cc",
+    "src/time_zone_fixed.h",
+    "src/time_zone_format.cc",
+    "src/time_zone_if.cc",
+    "src/time_zone_if.h",
+    "src/time_zone_impl.cc",
+    "src/time_zone_impl.h",
+    "src/time_zone_info.cc",
+    "src/time_zone_info.h",
+    "src/time_zone_libc.cc",
+    "src/time_zone_libc.h",
+    "src/time_zone_lookup.cc",
+    "src/time_zone_posix.cc",
+    "src/time_zone_posix.h",
+    "src/tzfile.h",
+    "src/zone_info_source.cc",
+  ]
+  public = [
+    "include/cctz/time_zone.h",
+    "include/cctz/zone_info_source.h",
+  ]
+  deps = [ ":civil_time" ]
+}
diff --git a/absl/types/BUILD.gn b/absl/types/BUILD.gn
new file mode 100644
index 0000000..e3eb35f
--- /dev/null
+++ b/absl/types/BUILD.gn
@@ -0,0 +1,132 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/gvisor_syscall_tests/*",
+  "//third_party/tink/*",
+]
+
+source_set("any") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "any.h" ]
+
+  deps = [
+    ":bad_any_cast",
+    "../base:config",
+    "../base:core_headers",
+    "../base:fast_type_id",
+    "../meta:type_traits",
+    "../utility",
+  ]
+}
+
+source_set("bad_any_cast") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "bad_any_cast.h" ]
+
+  deps = [
+    ":bad_any_cast_impl",
+    "../base:config",
+  ]
+}
+
+source_set("bad_any_cast_impl") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [
+    "bad_any_cast.cc",
+    "bad_any_cast.h",
+  ]
+
+  deps = [
+    "../base:config",
+    "../base:raw_logging_internal",
+  ]
+}
+
+source_set("span") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/span.h" ]
+  public = [ "span.h" ]
+
+  deps = [
+    "../algorithm",
+    "../base:core_headers",
+    "../base:throw_delegate",
+    "../meta:type_traits",
+  ]
+}
+
+source_set("optional") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/optional.h" ]
+  public = [ "optional.h" ]
+
+  deps = [
+    ":bad_optional_access",
+    "../base:base_internal",
+    "../base:config",
+    "../base:core_headers",
+    "../memory",
+    "../meta:type_traits",
+    "../utility",
+  ]
+}
+
+source_set("bad_optional_access") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "bad_optional_access.cc" ]
+  public = [ "bad_optional_access.h" ]
+
+  deps = [
+    "../base:config",
+    "../base:raw_logging_internal",
+  ]
+}
+
+source_set("bad_variant_access") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "bad_variant_access.cc" ]
+  public = [ "bad_variant_access.h" ]
+
+  deps = [
+    "../base:config",
+    "../base:raw_logging_internal",
+  ]
+}
+
+source_set("variant") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  sources = [ "internal/variant.h" ]
+  public = [ "variant.h" ]
+
+  deps = [
+    ":bad_variant_access",
+    "../base:base_internal",
+    "../base:config",
+    "../base:core_headers",
+    "../meta:type_traits",
+    "../utility",
+  ]
+}
+
+source_set("compare") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+
+  public = [ "compare.h" ]
+
+  deps = [
+    "../base:core_headers",
+    "../meta:type_traits",
+  ]
+}
diff --git a/absl/utility/BUILD.gn b/absl/utility/BUILD.gn
new file mode 100644
index 0000000..10b827a
--- /dev/null
+++ b/absl/utility/BUILD.gn
@@ -0,0 +1,20 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+visibility = [
+  "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
+  "//third_party/tink/*",
+]
+
+# CC Library : utility
+source_set("utility") {
+  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
+  public = [ "utility.h" ]
+  public_deps = [
+    "../base:base_internal",
+    "../base:config",
+    "../meta:type_traits",
+  ]
+}