# Copyright 2026 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

source_set("base_i18n_export") {
  public = [ "base_i18n_export.h" ]
}

component("language_tag_no_icu") {
  output_name = "language_tag_no_icu"
  sources = [
    "bcp47_extensions.cc",
    "bcp47_extensions.h",
    "language_tag.cc",
    "language_tag.h",
    "language_tag_value_converters.cc",
    "language_tag_value_converters.h",
  ]

  defines = [ "IS_LANGUAGE_TAG_IMPL" ]

  public_deps = [
    "//base",
    "//base/i18n/internal",
  ]
  deps = [ "//base/i18n/internal:canonical_language_tags" ]
}

component("language_tag") {
  output_name = "language_tag"
  sources = [
    "language_tag_matcher.cc",
    "language_tag_matcher.h",
    "legacy_language_tag_helpers.h",
    "locale_holder.cc",
    "locale_holder.h",
    "tag_converters.cc",
    "tag_converters.h",
  ]

  defines = [ "IS_LANGUAGE_TAG_WITH_ICU_IMPL" ]

  public_deps = [
    ":language_tag_no_icu",
    "//third_party/icu",
  ]
  deps = [
    "//base",
    "//base/i18n/internal",
    "//base/i18n/internal:canonical_language_tags",
    "//third_party/abseil-cpp:absl",
    "//third_party/rust/icu_capi/v2:lib",
  ]
}

source_set("unicodestring") {
  sources = [ "unicodestring.h" ]
  public_deps = [ "//third_party/icu" ]
}

source_set("timezone") {
  sources = [
    "timezone.cc",
    "timezone.h",
  ]

  defines = [ "BASE_I18N_IMPLEMENTATION" ]

  public_deps = [
    ":base_i18n_export",
    ":language_tag",
    "//base",
  ]

  deps = [
    ":unicodestring",
    "//third_party/icu",
  ]
}

source_set("time_formatting_types") {
  sources = [ "time_formatting_types.h" ]
}

source_set("test_support") {
  testonly = true
  public = [
    "test/scoped_icu_locale.h",
    "test/scoped_rtl_for_testing.h",
  ]
  sources = [
    "test/scoped_icu_locale.cc",
    "test/scoped_rtl_for_testing.cc",
  ]
  public_deps = [ "//base:i18n" ]
}

source_set("unittests") {
  testonly = true
  sources = [
    "bcp47_extensions_unittest.cc",
    "language_tag_matcher_unittest.cc",
    "language_tag_unittest.cc",
    "locale_holder_unittest.cc",
  ]
  deps = [
    "//base",
    "//base/i18n:language_tag",
    "//base/i18n/internal:unittests",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
