# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/abseil-cpp/absl.gni")

absl_source_set("path_util") {
  public = [ "internal/path_util.h" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/strings",
  ]
  visibility = [ ":*" ]
}

absl_source_set("program_name") {
  sources = [ "internal/program_name.cc" ]
  public = [ "internal/program_name.h" ]
  deps = [
    ":path_util",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
  visibility = [ ":*" ]
}

absl_source_set("config") {
  sources = [ "usage_config.cc" ]
  public = [
    "config.h",
    "usage_config.h",
  ]
  deps = [
    ":path_util",
    ":program_name",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}

absl_source_set("marshalling") {
  sources = [ "marshalling.cc" ]
  public = [ "marshalling.h" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:str_format",
  ]
}

absl_source_set("commandlineflag_internal") {
  public = [ "internal/commandlineflag.h" ]
  sources = [ "internal/commandlineflag.cc" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:fast_type_id",
  ]
}

absl_source_set("commandlineflag") {
  sources = [ "commandlineflag.cc" ]
  public = [ "commandlineflag.h" ]
  deps = [
    ":commandlineflag_internal",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:fast_type_id",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

absl_source_set("private_handle_accessor") {
  sources = [ "internal/private_handle_accessor.cc" ]
  public = [ "internal/private_handle_accessor.h" ]
  deps = [
    ":commandlineflag",
    ":commandlineflag_internal",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/strings",
  ]
  visibility = [ ":*" ]
}

absl_source_set("reflection") {
  sources = [ "reflection.cc" ]
  public = [
    "internal/registry.h",
    "reflection.h",
  ]
  deps = [
    ":commandlineflag",
    ":commandlineflag_internal",
    ":config",
    ":private_handle_accessor",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/container:flat_hash_map",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}

absl_source_set("flag_internal") {
  sources = [ "internal/flag.cc" ]
  public = [ "internal/flag.h" ]
  deps = [
    ":commandlineflag",
    ":commandlineflag_internal",
    ":config",
    ":marshalling",
    ":reflection",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/meta:type_traits",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/synchronization",
    "//third_party/abseil-cpp/absl/utility",
  ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/base/*",
  ]
}

absl_source_set("flag") {
  sources = [ "flag.cc" ]
  public = [
    "declare.h",
    "flag.h",
  ]
  deps = [
    ":config",
    ":flag_internal",
    ":reflection",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

absl_source_set("usage_internal") {
  sources = [ "internal/usage.cc" ]
  public = [ "internal/usage.h" ]
  deps = [
    ":commandlineflag",
    ":config",
    ":flag",
    ":flag_internal",
    ":path_util",
    ":private_handle_accessor",
    ":program_name",
    ":reflection",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/strings",
  ]
  visibility = [ ":*" ]
}

absl_source_set("usage") {
  sources = [ "usage.cc" ]
  public = [ "usage.h" ]
  deps = [
    ":usage_internal",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}

absl_source_set("parse") {
  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",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}
