# 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")
import("//build/unification/zbi/resource.gni")
import("//src/sys/build/components.gni")

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

  deps = [
    "//garnet/examples/fidl/services:echo-rustc",
    "//src/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",
  ]
}

# Rename the executable to be consistent with the common manifest.
resource("echo_server_rust") {
  deps = [ ":echo_server_rust_bin" ]
  sources = [ "$root_out_dir/echo_server_rust" ]
  outputs = [ "bin/echo_server" ]
}

fuchsia_component("echo-server-rust-cmp") {
  deps = [ ":echo_server_rust" ]
  component_name = "echo_server_rust"
  manifest = "../meta/echo_server.cmx"
}

fuchsia_package("echo-server-rust") {
  deps = [ ":echo-server-rust-cmp" ]
}
