# 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("//tools/grit/grit_rule.gni")

# GYP version: chrome/chrome_resources.gyp:chrome_strings
#              (generate_locale_settings action)
grit("locale_settings") {
  source = "locale_settings.grd"
  output_dir = "$root_gen_dir/chrome"
  use_qualified_include = true
  outputs = [
    "grit/locale_settings.h",
    "locale_settings_am.pak",
    "locale_settings_ar.pak",
    "locale_settings_bg.pak",
    "locale_settings_bn.pak",
    "locale_settings_ca.pak",
    "locale_settings_cs.pak",
    "locale_settings_da.pak",
    "locale_settings_de.pak",
    "locale_settings_el.pak",
    "locale_settings_en-GB.pak",
    "locale_settings_en-US.pak",
    "locale_settings_es.pak",
    "locale_settings_es-419.pak",
    "locale_settings_et.pak",
    "locale_settings_fa.pak",
    "locale_settings_fake-bidi.pak",
    "locale_settings_fi.pak",
    "locale_settings_fil.pak",
    "locale_settings_fr.pak",
    "locale_settings_gu.pak",
    "locale_settings_he.pak",
    "locale_settings_hi.pak",
    "locale_settings_hr.pak",
    "locale_settings_hu.pak",
    "locale_settings_id.pak",
    "locale_settings_it.pak",
    "locale_settings_ja.pak",
    "locale_settings_kn.pak",
    "locale_settings_ko.pak",
    "locale_settings_lt.pak",
    "locale_settings_lv.pak",
    "locale_settings_ml.pak",
    "locale_settings_mr.pak",
    "locale_settings_ms.pak",
    "locale_settings_nl.pak",
    "locale_settings_nb.pak",
    "locale_settings_pl.pak",
    "locale_settings_pt-BR.pak",
    "locale_settings_pt-PT.pak",
    "locale_settings_ro.pak",
    "locale_settings_ru.pak",
    "locale_settings_sk.pak",
    "locale_settings_sl.pak",
    "locale_settings_sr.pak",
    "locale_settings_sv.pak",
    "locale_settings_sw.pak",
    "locale_settings_ta.pak",
    "locale_settings_te.pak",
    "locale_settings_th.pak",
    "locale_settings_tr.pak",
    "locale_settings_uk.pak",
    "locale_settings_vi.pak",
    "locale_settings_zh-CN.pak",
    "locale_settings_zh-TW.pak",
  ]
}

# GYP version: chrome/chrome_resources.gyp:platform_locale_settings
grit("platform_locale_settings") {
  if (is_win) {
    source = "locale_settings_win.grd"
  } else if (is_mac || is_ios) {
    source = "locale_settings_mac.grd"
  } else if (is_chromeos) {
    if (is_chrome_branded) {
      source = "locale_settings_google_chromeos.grd"
    } else {
      source = "locale_settings_chromiumos.grd"
    }
  } else if (is_posix) {
    # All other posix systems just use the Linux one.
    source = "locale_settings_linux.grd"
  }

  outputs = [
    "grit/platform_locale_settings.h",
    "platform_locale_settings_am.pak",
    "platform_locale_settings_ar.pak",
    "platform_locale_settings_bg.pak",
    "platform_locale_settings_bn.pak",
    "platform_locale_settings_ca.pak",
    "platform_locale_settings_cs.pak",
    "platform_locale_settings_da.pak",
    "platform_locale_settings_de.pak",
    "platform_locale_settings_el.pak",
    "platform_locale_settings_en-GB.pak",
    "platform_locale_settings_en-US.pak",
    "platform_locale_settings_es.pak",
    "platform_locale_settings_es-419.pak",
    "platform_locale_settings_et.pak",
    "platform_locale_settings_fa.pak",
    "platform_locale_settings_fake-bidi.pak",
    "platform_locale_settings_fi.pak",
    "platform_locale_settings_fil.pak",
    "platform_locale_settings_fr.pak",
    "platform_locale_settings_gu.pak",
    "platform_locale_settings_he.pak",
    "platform_locale_settings_hi.pak",
    "platform_locale_settings_hr.pak",
    "platform_locale_settings_hu.pak",
    "platform_locale_settings_id.pak",
    "platform_locale_settings_it.pak",
    "platform_locale_settings_ja.pak",
    "platform_locale_settings_kn.pak",
    "platform_locale_settings_ko.pak",
    "platform_locale_settings_lt.pak",
    "platform_locale_settings_lv.pak",
    "platform_locale_settings_ml.pak",
    "platform_locale_settings_mr.pak",
    "platform_locale_settings_ms.pak",
    "platform_locale_settings_nl.pak",
    "platform_locale_settings_nb.pak",
    "platform_locale_settings_pl.pak",
    "platform_locale_settings_pt-BR.pak",
    "platform_locale_settings_pt-PT.pak",
    "platform_locale_settings_ro.pak",
    "platform_locale_settings_ru.pak",
    "platform_locale_settings_sk.pak",
    "platform_locale_settings_sl.pak",
    "platform_locale_settings_sr.pak",
    "platform_locale_settings_sv.pak",
    "platform_locale_settings_sw.pak",
    "platform_locale_settings_ta.pak",
    "platform_locale_settings_te.pak",
    "platform_locale_settings_th.pak",
    "platform_locale_settings_tr.pak",
    "platform_locale_settings_uk.pak",
    "platform_locale_settings_vi.pak",
    "platform_locale_settings_zh-CN.pak",
    "platform_locale_settings_zh-TW.pak",
  ]

  output_dir = "$root_gen_dir/chrome"
}
