# Copyright 2017 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("tts") {
  testonly = true
  deps = [
    ":bin",
    ":tts_service",
  ]
}

executable("bin") {
  output_name = "tts_service"

  sources = [
    "main.cc",
    "tts_service_impl.cc",
    "tts_speaker.cc",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//sdk/fidl/fuchsia.media",
    "//sdk/fidl/fuchsia.tts",
    "//sdk/lib/sys/cpp",
    "//third_party/flite",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fzl",
    "//zircon/public/lib/zx",
  ]
}

package("tts_service") {
  deps = [
    ":bin",
  ]

  binary = "tts_service"

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