# Copyright 2018 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("//build_overrides/build.gni")

if (build_with_chromium) {
  source_set("abseil") {
    public_deps = [ "//third_party/abseil-cpp:absl" ]
  }
} else {
  config("abseil_config") {
    include_dirs = [ "//third_party/abseil/src" ]
  }

  config("private_abseil_config") {
    cflags = [
      "-Wno-sign-compare",
      "-Wno-extra-semi",
      "-Wno-range-loop-analysis",
    ]

    if (is_mac) {
      cflags += [ "-Wno-range-loop-analysis" ]
    }
  }

  # NOTE: StrFormat is specifically excluded from the Abseil source set due
  # to binary size concerns.
  source_set("abseil") {
    sources = [
      "src/absl/base/attributes.h",
      "src/absl/base/config.h",
      "src/absl/base/internal/atomic_hook.h",
      "src/absl/base/internal/identity.h",
      "src/absl/base/internal/inline_variable.h",
      "src/absl/base/internal/invoke.h",
      "src/absl/base/internal/raw_logging.cc",
      "src/absl/base/internal/raw_logging.h",
      "src/absl/base/internal/throw_delegate.cc",
      "src/absl/base/internal/throw_delegate.h",
      "src/absl/base/log_severity.h",
      "src/absl/base/macros.h",
      "src/absl/base/optimization.h",
      "src/absl/base/policy_checks.h",
      "src/absl/base/port.h",
      "src/absl/container/internal/common.h",
      "src/absl/hash/hash.h",
      "src/absl/hash/hash_testing.h",
      "src/absl/hash/internal/city.cc",
      "src/absl/hash/internal/city.h",
      "src/absl/hash/internal/hash.cc",
      "src/absl/hash/internal/hash.h",
      "src/absl/hash/internal/spy_hash_state.h",
      "src/absl/memory/memory.h",
      "src/absl/meta/type_traits.h",
      "src/absl/numeric/int128.cc",
      "src/absl/numeric/int128.h",
      "src/absl/strings/ascii.cc",
      "src/absl/strings/ascii.h",
      "src/absl/strings/charconv.cc",
      "src/absl/strings/charconv.h",
      "src/absl/strings/escaping.cc",
      "src/absl/strings/escaping.h",
      "src/absl/strings/internal/charconv_bigint.cc",
      "src/absl/strings/internal/charconv_bigint.h",
      "src/absl/strings/internal/charconv_parse.cc",
      "src/absl/strings/internal/charconv_parse.h",
      "src/absl/strings/internal/escaping.cc",
      "src/absl/strings/internal/escaping.h",
      "src/absl/strings/internal/memutil.cc",
      "src/absl/strings/internal/memutil.h",
      "src/absl/strings/internal/str_join_internal.h",
      "src/absl/strings/internal/utf8.cc",
      "src/absl/strings/internal/utf8.h",
      "src/absl/strings/match.cc",
      "src/absl/strings/match.h",
      "src/absl/strings/numbers.cc",
      "src/absl/strings/numbers.h",
      "src/absl/strings/str_cat.cc",
      "src/absl/strings/str_cat.h",
      "src/absl/strings/str_join.h",
      "src/absl/strings/str_replace.cc",
      "src/absl/strings/str_replace.h",
      "src/absl/strings/str_split.cc",
      "src/absl/strings/str_split.h",
      "src/absl/strings/string_view.cc",
      "src/absl/strings/string_view.h",
      "src/absl/strings/substitute.cc",
      "src/absl/strings/substitute.h",
      "src/absl/types/bad_optional_access.cc",
      "src/absl/types/bad_optional_access.h",
      "src/absl/types/bad_variant_access.cc",
      "src/absl/types/bad_variant_access.h",
      "src/absl/types/optional.h",
      "src/absl/types/span.h",
      "src/absl/types/variant.h",
    ]

    configs += [ ":private_abseil_config" ]
    public_configs = [ ":abseil_config" ]
  }
}
