# 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")
load("@rules_cc//cc:defs.bzl", "cc_library")

cc_library(
    name = "base",
    srcs = [
        "debug/crash_logging.cc",
        "strings/string_piece.cc",
        "strings/string_util.cc",
        "strings/string_util_constants.cc",
        "strings/utf_string_conversion_utils.cc",
        "strings/utf_string_conversions.cc",
    ] + select({
        "//build_config:windows_x86_64": ["strings/string_util_win.cc"],
        "//conditions:default": [],
    }),
    hdrs = [
        "compiler_specific.h",
        "containers/checked_iterators.h",
        "containers/contains.h",
        "containers/contiguous_iterator.h",
        "containers/span.h",
        "containers/util.h",
        "cxx17_backports.h",
        "cxx20_to_address.h",
        "debug/crash_logging.h",
        "debug/leak_annotations.h",
        "functional/identity.h",
        "functional/invoke.h",
        "functional/not_fn.h",
        "memory/raw_ptr.h",
        "memory/raw_ptr_exclusion.h",
        "no_destructor.h",
        "ranges/algorithm.h",
        "ranges/functional.h",
        "ranges/ranges.h",
        "stl_util.h",
        "template_util.h",
        "strings/string_piece_forward.h",
        "strings/string_piece.h",
        "strings/string_util.h",
        "strings/string_util_internal.h",
        "strings/string_number_conversions.h",
        "strings/utf_string_conversions.h",
        "strings/utf_string_conversion_utils.h",
    ] + build_config.strings_hdrs,
    copts = build_config.default_copts,
    textual_hdrs = [
        "win/win_handle_types_list.inc",
    ],
    visibility = ["//visibility:public"],
    deps = [
        "//base/third_party/icu",
        "//build:build_config",
        "//build:buildflag",
        "//polyfills",
        "@com_google_absl//absl/types:optional",
    ],
)
