# Copyright 2015 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.

action("generate_icu_constants") {
  script = "generate_icu_constants.py"

  inputs = [
    "$root_build_dir/icudtl.dat",
  ]

  outputs = [
    "$root_gen_dir/mojo/icu/constants.cc",
  ]

  args = rebase_path(inputs + outputs, root_build_dir)

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

source_set("icu") {
  sources = [
    "$root_gen_dir/mojo/icu/constants.cc",
    "constants.h",
    "icu.cc",
    "icu.h",
  ]

  deps = [
    "//base:i18n",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//mojo/services/icu_data/public/interfaces",
    "//third_party/icu",
    ":generate_icu_constants",
  ]
}
