# 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/components.gni")

# [START bin]
executable("bin") {
  output_name = "fidl_echo_llcpp_server"
  sources = [ "main.cc" ]
  deps = [
    "//examples/fidl/fuchsia.examples:fuchsia.examples_llcpp",
    "//sdk/lib/fdio",
    "//sdk/lib/stdcompat",
    "//zircon/public/lib/fidl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/svc",
  ]
}

# [END bin]

# [START rest]
# Declare a component for the server, which consists of the manifest and the
# binary that the component will run.
fuchsia_component("echo-server") {
  manifest = "server.cmx"
  deps = [ ":bin" ]
}

# Declare a package that contains a single component, our server.
fuchsia_package("server") {
  package_name = "echo-llcpp-server"
  deps = [ ":echo-server" ]
}
# [END rest]
