# 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.
load("//build_config:build_config.bzl", "build_config")

cc_library(
    name = "strings",
    srcs = [
        "string16.cc",
        "string_piece.cc",
        "string_util.cc",
        "string_util_constants.cc",
        "utf_string_conversion_utils.cc",
        "utf_string_conversions.cc",
    ],
    hdrs = [
        "char_traits.h",
        "string16.h",
        "string_piece.h",
        "string_piece_forward.h",
        "string_util.h",
        "string_util_internal.h",
        "string_util_posix.h",
        "utf_string_conversion_utils.h",
        "utf_string_conversions.h",
    ],
    copts = build_config.default_copts,
    visibility = ["//visibility:public"],
    deps = [
        "//base",
        "//base/third_party/icu",
        "//build:build_config",
        "//polyfills",
    ],
)
