# 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")
import("//build/rust/rustc_binary.gni")

rustc_binary("echo_server_rust_bin") {
  name = "echo_server_rust"
  edition = "2018"

  deps = [
    "//garnet/examples/fidl/services:echo-rustc",
    "//garnet/public/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:thiserror",
  ]
}

deprecated_fuchsia_component("echo_server_rust_component") {
  manifest = rebase_path("../meta/echo_server.cmx")
  manifest_dest = "meta/echo_server_rust.cmx"
  deps = [ ":echo_server_rust_bin" ]

  binary = "echo_server_rust"
  binary_dest = "bin/echo_server"
}

package("echo_server_rust") {
  components = [ ":echo_server_rust_component" ]
}
