# Copyright 2019 The Chromium Authors
# 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:string_view",
  ]
  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:string_view",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
  visibility = [
    ":*",
    "../log:*",
  ]
}

# Since absl/flags are only used by some test binaries (e.g. in WebRTC),
# there is no need to strip flags from mobile platforms binaries.
# This does not affect Chromium.
config("absl_flags_config") {
  defines = [ "ABSL_FLAGS_STRIP_NAMES=0" ]
}

absl_source_set("config") {
  sources = [ "usage_config.cc" ]
  public_configs = [ ":absl_flags_config" ]
  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/strings:string_view",
    "//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/numeric:int128",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:str_format",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

absl_source_set("commandlineflag_internal") {
  visibility = [ ":*" ]
  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:string_view",
    "//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:string_view",
  ]
  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/base:no_destructor",
    "//third_party/abseil-cpp/absl/container:flat_hash_map",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}

absl_source_set("flag_internal") {
  sources = [ "internal/flag.cc" ]
  public = [
    "internal/flag.h",
    "internal/sequence_lock.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/base:dynamic_annotations",
    "//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/strings:string_view",
    "//third_party/abseil-cpp/absl/synchronization",
    "//third_party/abseil-cpp/absl/utility",
  ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/base/*",
  ]
}

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

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",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
  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/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//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/algorithm:container",
    "//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/strings:string_view",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}

absl_test("flag_test") {
  sources = [
    "flag_test.cc",
    "flag_test_defs.cc",
  ]
  deps = [
    ":config",
    ":flag",
    ":flag_internal",
    ":marshalling",
    ":reflection",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:malloc_internal",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/numeric:int128",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/abseil-cpp/absl/time",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}
