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

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

  sources = [
    "echo_server.cc",
  ]

  deps = [
    "//garnet/examples/fidl/services:echo_llcpp",
    "//sdk/lib/svc",
    "//sdk/lib/sys/cpp",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fidl-async-cpp",
  ]
}

package("echo_server_llcpp") {
  deps = [
    ":bin",
  ]
  binaries = [
    {
      name = "echo_server_llcpp"
      dest = "echo_server"
    },
  ]

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