# 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) {
  visibility = [
    "//third_party/webrtc/*",
    "//third_party/abseil-cpp/*",
  ]
} else {
  visibility = [ "*" ]
}

source_set("strings") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "ascii.cc",
    "charconv.cc",
    "escaping.cc",
    "internal/charconv_bigint.cc",
    "internal/charconv_bigint.h",
    "internal/charconv_parse.cc",
    "internal/charconv_parse.h",
    "internal/memutil.cc",
    "internal/memutil.h",
    "internal/stl_type_traits.h",
    "internal/str_join_internal.h",
    "internal/str_split_internal.h",
    "match.cc",
    "numbers.cc",
    "str_cat.cc",
    "str_replace.cc",
    "str_split.cc",
    "string_view.cc",
    "substitute.cc",
  ]
  public = [
    "ascii.h",
    "charconv.h",
    "escaping.h",
    "match.h",
    "numbers.h",
    "str_cat.h",
    "str_join.h",
    "str_replace.h",
    "str_split.h",
    "string_view.h",
    "strip.h",
    "substitute.h",
  ]
  deps = [
    ":internal",
    "../base",
    "../base:config",
    "../base:core_headers",
    "../base:endian",
    "../base:throw_delegate",
    "../memory",
    "../meta:type_traits",
    "../numeric:int128",
  ]
}

source_set("internal") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "internal/ostringstream.cc",
    "internal/utf8.cc",
  ]
  public = [
    "internal/bits.h",
    "internal/char_map.h",
    "internal/ostringstream.h",
    "internal/resize_uninitialized.h",
    "internal/utf8.h",
  ]
  deps = [
    "../base:core_headers",
    "../base:endian",
    "../meta:type_traits",
  ]
}
