Define enough of the world to build grpc

Change-Id: I9a317c81aa086bd62c62402ed6a0ac7cb4a57a79
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/abseil-cpp/+/561526
Reviewed-by: Ambre Williams <ambre@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 4f80295..e872ebc 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -6,16 +6,17 @@
 # abseil-cpp from the Fuchsia platform source tree once cobalt
 # moves out-of-tree.
 visibility = [
-  "//src/ledger/*",
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/grpc:*",
   "//third_party/tink/*",
 ]
 
-static_library("abseil-cpp") {
-  public_deps = [
-    "//third_party/abseil-cpp/absl",
-  ]
+group("abseil-cpp") {
+  public_deps = [ "absl" ]
+}
+
+group("absl") {
+  public_deps = [ "absl" ]
 }
 
 config("abseil_config") {
diff --git a/absl/BUILD.gn b/absl/BUILD.gn
index b40dc8a..4223c9c 100644
--- a/absl/BUILD.gn
+++ b/absl/BUILD.gn
@@ -3,24 +3,60 @@
 # found in the LICENSE file.
 
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//third_party/tink/*",
 ]
 
-static_library("absl") {
-  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-
+group("absl") {
   public_deps = [
-    "//third_party/abseil-cpp/absl/base:core_headers",
-    "//third_party/abseil-cpp/absl/base:base",
-    "//third_party/abseil-cpp/absl/base:config",
-    "//third_party/abseil-cpp/absl/base:dynamic_annotations",
-    "//third_party/abseil-cpp/absl/base:endian",
-    "//third_party/abseil-cpp/absl/base:throw_delegate",
-    "//third_party/abseil-cpp/absl/base:bits",
-    "//third_party/abseil-cpp/absl/flags",
-    "//third_party/abseil-cpp/absl/strings",
-    "//third_party/abseil-cpp/absl/utility",
+    "algorithm",
+    "algorithm:container",
+    "base",
+    "base:atomic_hook",
+    "base:config",
+    "base:core_headers",
+    "base:dynamic_annotations",
+    "base:endian",
+    "base:log_severity",
+    "base:throw_delegate",
+    "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",
+    "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
index 1797828..139a09d 100644
--- a/absl/algorithm/BUILD.gn
+++ b/absl/algorithm/BUILD.gn
@@ -3,25 +3,21 @@
 # found in the LICENSE file.
 
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$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",
-  ]
+  public = [ "algorithm.h" ]
 }
 
 # CC Library : container
 source_set("container") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "container.h",
-  ]
+  public = [ "container.h" ]
   public_deps = [
     ":algorithm",
     "../base:core_headers",
diff --git a/absl/base/BUILD.gn b/absl/base/BUILD.gn
index 7a6d70e..708863b 100644
--- a/absl/base/BUILD.gn
+++ b/absl/base/BUILD.gn
@@ -6,24 +6,128 @@
 # abseil-cpp from the Fuchsia platform source tree once cobalt
 # moves out-of-tree.
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//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",
   ]
 }
 
@@ -35,9 +139,13 @@
     "internal/identity.h",
     "internal/inline_variable.h",
     "internal/invoke.h",
+    "internal/scheduling_mode.h",
   ]
-  visibility = []
-  visibility += [ "../*" ]
+
+  deps = [
+    ":config",
+    "../meta:type_traits",
+  ]
 }
 
 source_set("base") {
@@ -45,116 +153,63 @@
 
   sources = [
     "internal/cycleclock.cc",
-    "internal/raw_logging.cc",
     "internal/spinlock.cc",
     "internal/sysinfo.cc",
     "internal/thread_identity.cc",
     "internal/unscaledcycleclock.cc",
-    "log_severity.cc",
   ]
   public = [
     "call_once.h",
     "casts.h",
-    "internal/atomic_hook.h",
     "internal/cycleclock.h",
     "internal/low_level_scheduling.h",
     "internal/per_thread_tls.h",
-    "internal/raw_logging.h",
     "internal/spinlock.h",
     "internal/sysinfo.h",
     "internal/thread_identity.h",
     "internal/tsan_mutex_interface.h",
     "internal/unscaledcycleclock.h",
-    "log_severity.h",
   ]
+
   deps = [
+    ":atomic_hook",
     ":base_internal",
     ":config",
     ":core_headers",
     ":dynamic_annotations",
+    ":log_severity",
+    ":raw_logging_internal",
     ":spinlock_wait",
-  ]
-}
-
-source_set("config") {
-  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-
-  public = [
-    "config.h",
-    "policy_checks.h",
-  ]
-}
-
-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",
-    ":config",
-    ":core_headers",
-    ":dynamic_annotations",
-    ":spinlock_wait",
-  ]
-  visibility = []
-  visibility += [ "../*" ]
-}
-
-source_set("dynamic_annotations") {
-  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-
-  sources = [
-    "dynamic_annotations.cc",
-  ]
-  public = [
-    "dynamic_annotations.h",
-  ]
-}
-
-source_set("spinlock_wait") {
-  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-
-  sources = [
-    "internal/spinlock_akaros.inc",
-    "internal/spinlock_posix.inc",
-    "internal/spinlock_wait.cc",
-    "internal/spinlock_win32.inc",
-  ]
-  public = [
-    "internal/scheduling_mode.h",
-    "internal/spinlock_wait.h",
-  ]
-  deps = [
-    ":core_headers",
-  ]
-  visibility = []
-  visibility += [ "../base:*" ]
-}
-
-source_set("endian") {
-  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  sources = [
-    "internal/endian.h",
-    "internal/unaligned_access.h",
-  ]
-  deps = [
-    ":config",
-    ":core_headers",
+    "../meta:type_traits",
   ]
 }
 
 source_set("throw_delegate") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  sources = [
-    "internal/throw_delegate.cc",
-    "internal/throw_delegate.h",
+
+  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",
@@ -162,12 +217,47 @@
   ]
 }
 
-source_set("bits") {
+source_set("exponential_biased") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/bits.h",
-  ]
-  public_deps = [
+
+  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/container/BUILD.gn b/absl/container/BUILD.gn
index 9c8ce5a..2125d4b 100644
--- a/absl/container/BUILD.gn
+++ b/absl/container/BUILD.gn
@@ -3,161 +3,232 @@
 # found in the LICENSE file.
 
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//third_party/tink/*",
 ]
 
-# CC Library : compressed_tuple
 source_set("compressed_tuple") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/compressed_tuple.h",
-  ]
-  public_deps = [
-    "../utility:utility",
-  ]
+
+  public = [ "internal/compressed_tuple.h" ]
+
+  deps = [ "../utility" ]
 }
 
-# CC Library : fixed_array
 source_set("fixed_array") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "fixed_array.h",
-  ]
-  public_deps = [
+
+  public = [ "fixed_array.h" ]
+
+  deps = [
     ":compressed_tuple",
-    "../algorithm:algorithm",
+    "../algorithm",
+    "../base:config",
     "../base:core_headers",
     "../base:dynamic_annotations",
     "../base:throw_delegate",
-    "../memory:memory",
+    "../memory",
   ]
 }
 
-# CC Library : flat_hash_map
+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",
-  ]
-  public_deps = [
+
+  public = [ "flat_hash_map.h" ]
+
+  deps = [
     ":container_memory",
     ":hash_function_defaults",
     ":raw_hash_map",
     "../algorithm:container",
-    "../memory:memory",
+    "../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",
   ]
 }
 
-# CC Library : container_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",
-  ]
-  public_deps = [
-    "../memory:memory",
-    "../utility:utility",
+
+  public = [ "internal/container_memory.h" ]
+
+  deps = [
+    "../base:config",
+    "../memory",
+    "../meta:type_traits",
+    "../utility",
   ]
 }
-
-# CC Library : hash_function_defaults
 source_set("hash_function_defaults") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/hash_function_defaults.h",
-  ]
-  public_deps = [
+
+  public = [ "internal/hash_function_defaults.h" ]
+
+  deps = [
     "../base:config",
-    "../hash:hash",
-    "../strings:strings",
+    "../hash",
+    "../strings",
+    "../strings:cord",
   ]
 }
 
-# CC Library : hash_policy_traits
 source_set("hash_policy_traits") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/hash_policy_traits.h",
-  ]
-  public_deps = [
-    "../meta:type_traits",
-  ]
+
+  public = [ "internal/hash_policy_traits.h" ]
+
+  deps = [ "../meta:type_traits" ]
 }
 
-# CC Library : hashtable_debug_hooks
+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",
-  ]
+
+  public = [ "internal/hashtable_debug_hooks.h" ]
+
+  deps = [ "../base:config" ]
 }
 
-# CC Library : hashtablez_sampler
 source_set("hashtablez_sampler") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/hashtablez_sampler.h",
-  ]
+
   sources = [
     "internal/hashtablez_sampler.cc",
     "internal/hashtablez_sampler_force_weak_definition.cc",
   ]
-  public_deps = [
+  public = [ "internal/hashtablez_sampler.h" ]
+
+  deps = [
     ":have_sse",
-    "../base:base",
+    "../base",
     "../base:core_headers",
+    "../base:exponential_biased",
     "../debugging:stacktrace",
-    "../memory:memory",
-    "../synchronization:synchronization",
-    "../utility:utility",
+    "../memory",
+    "../synchronization",
+    "../utility",
   ]
 }
 
-# CC Library : raw_hash_map
+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",
-  ]
-  public_deps = [
+
+  public = [ "internal/raw_hash_map.h" ]
+
+  deps = [
     ":container_memory",
     ":raw_hash_set",
     "../base:throw_delegate",
   ]
 }
 
-# CC Library : have_sse
 source_set("have_sse") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/have_sse.h",
-  ]
+
+  public = [ "internal/have_sse.h" ]
 }
 
-# CC Library : common
 source_set("common") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/common.h",
-  ]
-  public_deps = [
+
+  public = [ "internal/common.h" ]
+
+  deps = [
     "../meta:type_traits",
     "../types:optional",
   ]
 }
 
-# CC Library : raw_hash_set
 source_set("raw_hash_set") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/raw_hash_set.h",
-  ]
-  sources = [
-    "internal/raw_hash_set.cc",
-  ]
-  public_deps = [
+
+  sources = [ "internal/raw_hash_set.cc" ]
+  public = [ "internal/raw_hash_set.h" ]
+
+  deps = [
     ":common",
     ":compressed_tuple",
     ":container_memory",
@@ -166,27 +237,55 @@
     ":hashtablez_sampler",
     ":have_sse",
     ":layout",
-    "../base:bits",
     "../base:config",
     "../base:core_headers",
     "../base:endian",
-    "../memory:memory",
+    "../memory",
     "../meta:type_traits",
-    "../utility:utility",
+    "../numeric:bits",
+    "../utility",
   ]
 }
 
-# CC Library : layout
 source_set("layout") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/layout.h",
-  ]
-  public_deps = [
+
+  public = [ "internal/layout.h" ]
+
+  deps = [
+    "../base:config",
     "../base:core_headers",
     "../meta:type_traits",
-    "../strings:strings",
+    "../strings",
     "../types:span",
-    "../utility:utility",
+    "../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
index 8c21f61..a5af441 100644
--- a/absl/debugging/BUILD.gn
+++ b/absl/debugging/BUILD.gn
@@ -3,20 +3,16 @@
 # found in the LICENSE file.
 
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$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",
-  ]
+  sources = [ "stacktrace.cc" ]
+  public = [ "stacktrace.h" ]
   deps = [
     ":debugging_internal",
     "../base",
@@ -48,12 +44,8 @@
 source_set("demangle_internal") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
 
-  sources = [
-    "internal/demangle.cc",
-  ]
-  public = [
-    "internal/demangle.h",
-  ]
+  sources = [ "internal/demangle.cc" ]
+  public = [ "internal/demangle.h" ]
   deps = [
     "../base",
     "../base:core_headers",
diff --git a/absl/flags/BUILD.gn b/absl/flags/BUILD.gn
deleted file mode 100644
index f0e7ac4..0000000
--- a/absl/flags/BUILD.gn
+++ /dev/null
@@ -1,75 +0,0 @@
-# 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.
-
-# 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 = [
-  "//src/ledger/*",
-  "//third_party/abseil-cpp/*",
-  "$cobalt_root/*",
-  "//third_party/tink/*",
-]
-
-static_library("flags") {
-  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-
-  sources = [
-    "config.h",
-    "declare.h",
-    "flag.cc",
-    "flag.h",
-    "marshalling.cc",
-    "marshalling.h",
-    "parse.cc",
-    "parse.h",
-    "usage.cc",
-    "usage_config.cc",
-    "usage_config.h",
-    "usage.h",
-  ]
-
-  public_deps = [
-    "../strings",
-    "../synchronization",
-  ]
-
-  deps = [
-    ":internal",
-    "../base",
-    "../base:config",
-    "../base:core_headers",
-    "../base:endian",
-    "../base:throw_delegate",
-    "../memory",
-    "../meta:type_traits",
-    "../numeric:int128",
-  ]
-}
-
-static_library("internal") {
-  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-
-  public_deps = [
-    "../strings",
-    "../synchronization",
-  ]
-
-  sources = [
-    "internal/commandlineflag.cc",
-    "internal/commandlineflag.h",
-    "internal/flag.cc",
-    "internal/flag.h",
-    "internal/parse.h",
-    "internal/path_util.h",
-    "internal/program_name.cc",
-    "internal/program_name.h",
-    "internal/registry.cc",
-    "internal/registry.h",
-    "internal/type_erased.cc",
-    "internal/type_erased.h",
-    "internal/usage.cc",
-    "internal/usage.h",
-  ]
-}
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
index dfca79a..f086323 100644
--- a/absl/hash/BUILD.gn
+++ b/absl/hash/BUILD.gn
@@ -3,47 +3,58 @@
 # found in the LICENSE file.
 
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//third_party/tink/*",
 ]
 
-# CC Library : hash
 source_set("hash") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "hash.h",
-  ]
+
   sources = [
     "internal/hash.cc",
     "internal/hash.h",
   ]
-  public_deps = [
+  public = [ "hash.h" ]
+
+  deps = [
     ":city",
+    ":wyhash",
+    "../base:config",
     "../base:core_headers",
     "../base:endian",
     "../container:fixed_array",
     "../meta:type_traits",
     "../numeric:int128",
-    "../strings:strings",
+    "../strings",
     "../types:optional",
     "../types:variant",
-    "../utility:utility",
+    "../utility",
   ]
 }
 
-# CC Library : city
 source_set("city") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "internal/city.h",
-  ]
-  sources = [
-    "internal/city.cc",
-  ]
-  public_deps = [
+
+  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
index e91ae3e..d9a6e23 100644
--- a/absl/memory/BUILD.gn
+++ b/absl/memory/BUILD.gn
@@ -6,15 +6,16 @@
 # abseil-cpp from the Fuchsia platform source tree once cobalt
 # moves out-of-tree.
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//third_party/tink/*",
 ]
 
 source_set("memory") {
-  public = [
-    "memory.h",
-  ]
+  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
index 43771cc..1ef2a5c 100644
--- a/absl/meta/BUILD.gn
+++ b/absl/meta/BUILD.gn
@@ -6,16 +6,15 @@
 # abseil-cpp from the Fuchsia platform source tree once cobalt
 # moves out-of-tree.
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//third_party/tink/*",
 ]
 
 source_set("type_traits") {
-  public = [
-    "type_traits.h",
-  ]
-  deps = [
-    "../base:config",
-  ]
+  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
index 3ba12f0..964b6d4 100644
--- a/absl/numeric/BUILD.gn
+++ b/absl/numeric/BUILD.gn
@@ -6,11 +6,24 @@
 # abseil-cpp from the Fuchsia platform source tree once cobalt
 # moves out-of-tree.
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$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" ]
 
@@ -19,11 +32,17 @@
     "int128_have_intrinsic.inc",
     "int128_no_intrinsic.inc",
   ]
-  public = [
-    "int128.h",
-  ]
+  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/status/BUILD.gn b/absl/status/BUILD.gn
new file mode 100644
index 0000000..3d549fb
--- /dev/null
+++ b/absl/status/BUILD.gn
@@ -0,0 +1,50 @@
+# 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("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
index a3d8595..52ad5ca 100644
--- a/absl/strings/BUILD.gn
+++ b/absl/strings/BUILD.gn
@@ -6,37 +6,48 @@
 # abseil-cpp from the Fuchsia platform source tree once cobalt
 # moves out-of-tree.
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//third_party/tink/*",
 ]
 
-static_library("strings") {
+source_set("strings") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
 
   sources = [
     "ascii.cc",
-    "ascii.h",
     "charconv.cc",
-    "charconv.h",
     "escaping.cc",
-    "escaping.h",
+    "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",
-    "match.h",
     "numbers.cc",
-    "numbers.h",
     "str_cat.cc",
-    "str_cat.h",
-    "str_format.h",
+    "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",
-    "str_join.h",
-    "str_replace.cc",
-    "str_replace.h",
-    "str_split.cc",
-    "str_split.h",
-    "substitute.cc",
     "substitute.h",
   ]
 
@@ -46,46 +57,244 @@
     "../base:config",
     "../base:core_headers",
     "../base:endian",
+    "../base:raw_logging_internal",
     "../base:throw_delegate",
     "../memory",
     "../meta:type_traits",
+    "../numeric:bits",
     "../numeric:int128",
   ]
 }
 
-static_library("internal") {
+source_set("internal") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
 
   sources = [
-    "internal/charconv_bigint.cc",
-    "internal/charconv_bigint.h",
-    "internal/charconv_parse.cc",
-    "internal/charconv_parse.h",
-    "internal/char_map.h",
-    "internal/memutil.cc",
-    "internal/memutil.h",
+    "internal/escaping.cc",
     "internal/ostringstream.cc",
+    "internal/utf8.cc",
+  ]
+  public = [
+    "internal/char_map.h",
+    "internal/escaping.h",
     "internal/ostringstream.h",
-    "internal/pow10_helper.cc",
-    "internal/pow10_helper.h",
     "internal/resize_uninitialized.h",
-    "internal/stl_type_traits.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/arg.h",
     "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.cc",
     "internal/str_format/extension.h",
-    "internal/str_format/float_conversion.cc",
     "internal/str_format/float_conversion.h",
-    "internal/str_format/output.cc",
     "internal/str_format/output.h",
-    "internal/str_format/parser.cc",
     "internal/str_format/parser.h",
-    "internal/str_join_internal.h",
-    "internal/str_split_internal.h",
-    "internal/utf8.cc",
-    "internal/utf8.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
index c3426e6..b9f780e 100644
--- a/absl/synchronization/BUILD.gn
+++ b/absl/synchronization/BUILD.gn
@@ -6,20 +6,16 @@
 # abseil-cpp from the Fuchsia platform source tree once cobalt
 # moves out-of-tree.
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$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",
-  ]
+  sources = [ "internal/graphcycles.cc" ]
+  public = [ "internal/graphcycles.h" ]
   deps = [
     "../base",
     "../base:base_internal",
diff --git a/absl/time/BUILD.gn b/absl/time/BUILD.gn
index d0072f8..38fb4fd 100644
--- a/absl/time/BUILD.gn
+++ b/absl/time/BUILD.gn
@@ -6,12 +6,12 @@
 # abseil-cpp from the Fuchsia platform source tree once cobalt
 # moves out-of-tree.
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//third_party/tink/*",
 ]
 
-static_library("time") {
+source_set("time") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
 
   sources = [
diff --git a/absl/time/internal/cctz/BUILD.gn b/absl/time/internal/cctz/BUILD.gn
index 14e3ebe..b46b019 100644
--- a/absl/time/internal/cctz/BUILD.gn
+++ b/absl/time/internal/cctz/BUILD.gn
@@ -10,9 +10,7 @@
 source_set("civil_time") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
 
-  sources = [
-    "src/civil_time_detail.cc",
-  ]
+  sources = [ "src/civil_time_detail.cc" ]
   public = [
     "include/cctz/civil_time.h",
     "include/cctz/civil_time_detail.h",
@@ -44,7 +42,5 @@
     "include/cctz/time_zone.h",
     "include/cctz/zone_info_source.h",
   ]
-  deps = [
-    ":civil_time",
-  ]
+  deps = [ ":civil_time" ]
 }
diff --git a/absl/types/BUILD.gn b/absl/types/BUILD.gn
index 8e0f7bd..d920954 100644
--- a/absl/types/BUILD.gn
+++ b/absl/types/BUILD.gn
@@ -3,93 +3,129 @@
 # found in the LICENSE file.
 
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$cobalt_root/*",
+  "//third_party/abseil-cpp/*",
   "//third_party/tink/*",
 ]
 
-# CC Library : span
+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" ]
-  public = [
-    "span.h",
-  ]
-  sources = [
-    "internal/span.h",
-  ]
-  public_deps = [
-    "../algorithm:algorithm",
+
+  sources = [ "internal/span.h" ]
+  public = [ "span.h" ]
+
+  deps = [
+    "../algorithm",
     "../base:core_headers",
     "../base:throw_delegate",
     "../meta:type_traits",
   ]
 }
 
-# CC Library : optional
 source_set("optional") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "optional.h",
-  ]
-  sources = [
-    "internal/optional.h",
-  ]
-  public_deps = [
+
+  sources = [ "internal/optional.h" ]
+  public = [ "optional.h" ]
+
+  deps = [
     ":bad_optional_access",
     "../base:base_internal",
     "../base:config",
     "../base:core_headers",
-    "../memory:memory",
+    "../memory",
     "../meta:type_traits",
-    "../utility:utility",
+    "../utility",
   ]
 }
 
-# CC Library : bad_optional_access
 source_set("bad_optional_access") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "bad_optional_access.h",
-  ]
-  sources = [
-    "bad_optional_access.cc",
-  ]
-  public_deps = [
-    "../base",
+
+  sources = [ "bad_optional_access.cc" ]
+  public = [ "bad_optional_access.h" ]
+
+  deps = [
     "../base:config",
+    "../base:raw_logging_internal",
   ]
 }
 
-# CC Library : bad_variant_access
 source_set("bad_variant_access") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "bad_variant_access.h",
-  ]
-  sources = [
-    "bad_variant_access.cc",
-  ]
-  public_deps = [
-    "../base",
+
+  sources = [ "bad_variant_access.cc" ]
+  public = [ "bad_variant_access.h" ]
+
+  deps = [
     "../base:config",
+    "../base:raw_logging_internal",
   ]
 }
 
-# CC Library : variant
 source_set("variant") {
   public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
-  public = [
-    "variant.h",
-  ]
-  sources = [
-    "internal/variant.h",
-  ]
-  public_deps = [
+
+  sources = [ "internal/variant.h" ]
+  public = [ "variant.h" ]
+
+  deps = [
     ":bad_variant_access",
     "../base:base_internal",
     "../base:config",
     "../base:core_headers",
     "../meta:type_traits",
-    "../utility:utility",
+    "../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
index 3171f23..10b827a 100644
--- a/absl/utility/BUILD.gn
+++ b/absl/utility/BUILD.gn
@@ -3,17 +3,15 @@
 # found in the LICENSE file.
 
 visibility = [
-  "//third_party/abseil-cpp/*",
   "$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 = [ "utility.h" ]
   public_deps = [
     "../base:base_internal",
     "../base:config",