# 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.

# WARNING: This file is automatically generated.

import("//build_overrides/build.gni")

if (build_with_chromium) {
  visibility = [
    "//third_party/webrtc/*",
    "//third_party/abseil-cpp/*",
  ]
} else {
  visibility = [ "*" ]
}

source_set("any") {
  configs += [
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "any.h",
  ]
  deps = [
    ":bad_any_cast",
    "../base:config",
    "../base:core_headers",
    "../meta:type_traits",
    "../utility",
  ]
}

source_set("bad_any_cast") {
  configs += [
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "bad_any_cast.cc",
  ]
  public = [
    "bad_any_cast.h",
  ]
  deps = [
    "../base",
    "../base:config",
  ]
}

source_set("span") {
  configs += [ "//third_party/abseil-cpp:absl_default_cflags_cc" ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "span.h",
  ]
  deps = [
    "../algorithm",
    "../base:core_headers",
    "../base:throw_delegate",
    "../meta:type_traits",
  ]
}

source_set("optional") {
  configs += [ "//third_party/abseil-cpp:absl_default_cflags_cc" ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "optional.cc",
  ]
  public = [
    "optional.h",
  ]
  deps = [
    ":bad_optional_access",
    "../base:config",
    "../memory",
    "../meta:type_traits",
    "../utility",
  ]
}

source_set("bad_optional_access") {
  configs += [
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "bad_optional_access.cc",
  ]
  public = [
    "bad_optional_access.h",
  ]
  deps = [
    "../base",
    "../base:config",
  ]
}
