Define abls/flags targets

These are used by netstack intree syscall tests

Change-Id: I1d66583e13374ad3ee2ba950f01aa70bb9e4690b
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/abseil-cpp/+/594501
Reviewed-by: Adam Barth <abarth@google.com>
diff --git a/absl/flags/BUILD.gn b/absl/flags/BUILD.gn
new file mode 100644
index 0000000..e198bc4
--- /dev/null
+++ b/absl/flags/BUILD.gn
@@ -0,0 +1,219 @@
+# 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/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",
+  ]
+}