# 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 = [ ":*" ]
}

# 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/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",
    "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/synchronization",
    "//third_party/abseil-cpp/absl/utility",
  ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/base/*",
  ]
}

absl_source_set("flag") {
  sources = [
    "flag.cc",
    "internal/flag_msvc.inc",
  ]
  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/container:flat_hash_map",
    "//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",
  ]
}
