# Copyright 2020 The Fuchsia 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/package.gni")

group("intl_services") {
  testonly = true
  public_deps = [
    ":pkg",
    ":tests",
  ]
}

group("tests") {
  testonly = true
  public_deps = [ "tests" ]
}

group("config") {
  public_deps = [ "config" ]
}

executable("intl_services_bin") {

  sources = [ "main.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.settings",
    "//sdk/fidl/fuchsia.setui",
    "//sdk/lib/sys/cpp",
    "//src/lib/intl/intl_property_provider_impl",
    "//src/lib/syslog/cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
  ]
}

package("pkg") {
  package_name = "intl_services"
  deps = [ ":intl_services_bin" ]

  binaries = [
    {
      name = "intl_services_bin"
      dest = "intl_services"
    },
  ]

  meta = [
    {
      path = "meta/intl_services.cmx"
      dest = "intl_services.cmx"
    },
  ]

  resources = [
    {
      path = rebase_path("//third_party/icu/common/icudtl.dat")
      dest = "icudtl.dat"
    },
  ]
}
