# Copyright 2014 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/config/locales.gni")
import("//tools/grit/grit_rule.gni")

# Meta target that includes both ui_strings and app_locale_settings. Most
# targets want both. You can depend on the individually if you need to.
group("strings") {
  public_deps = [
    ":app_locale_settings",
    ":ui_strings",
  ]
}

grit("ui_strings") {
  source = "ui_strings.grd"
  use_qualified_include = true
  outputs = [
    "grit/ui_strings.h",
  ]
  foreach(locale, locales_with_fake_bidi) {
    outputs += [ "ui_strings_$locale.pak" ]
  }
}

grit("app_locale_settings") {
  source = "app_locale_settings.grd"
  use_qualified_include = true
  outputs = [
    "grit/app_locale_settings.h",
  ]
  foreach(locale, locales_with_fake_bidi) {
    outputs += [ "app_locale_settings_$locale.pak" ]
  }
}
