# Copyright 2018 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")

package("intl_wisdom") {
  deps = [
    "client:intl_wisdom_client",
    "server:intl_wisdom_server",
  ]

  binaries = [
    {
      name = "intl_wisdom_client"
    },
    {
      name = "intl_wisdom_server"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/intl_wisdom_client.cmx")
      dest = "intl_wisdom_client.cmx"
    },
    {
      path = rebase_path("meta/intl_wisdom_server.cmx")
      dest = "intl_wisdom_server.cmx"
    },
  ]

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

group("cpp") {
  deps = [ ":intl_wisdom" ]
}

group("tests") {
  testonly = true
  deps = [ ":cpp" ]
}
