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

rustc_binary("hello_world_bin") {
  source_root = "src/hello_world.rs"
  name = "hello_world"
  edition = "2018"
}

rustc_binary("ls_root_pkg_bin") {
  source_root = "src/ls_root_pkg.rs"
  name = "ls_root_pkg"
  edition = "2018"
}

rustc_binary("echo_args_bin") {
  source_root = "src/echo_args.rs"
  name = "echo_args"
  edition = "2018"
}

rustc_binary("lifecycle") {
  source_root = "src/lifecycle.rs"
  name = "lifecycle"
  edition = "2018"

  deps = [
    "//src/lib/fuchsia-runtime",
    "//src/lib/syslog/rust:syslog",
  ]
}

rustc_binary("lifecycle_full") {
  source_root = "src/lifecycle_full.rs"
  name = "lifecycle_full"
  edition = "2018"

  deps = [
    "//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle-rustc",
    "//src/lib/fuchsia-runtime",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:futures-util",
  ]
}

package("components_basic_example") {
  deps = [
    ":echo_args_bin",
    ":hello_world_bin",
    ":lifecycle",
    ":lifecycle_full",
    ":ls_root_pkg_bin",
  ]

  binaries = [
    {
      name = "hello_world"
    },
    {
      name = "ls_root_pkg"
    },
    {
      name = "echo_args"
    },
    {
      name = "lifecycle"
    },
    {
      name = "lifecycle_full"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/hello_world.cml")
      dest = "hello_world.cm"
    },
    {
      path = rebase_path("meta/ls_root_pkg.cml")
      dest = "ls_root_pkg.cm"
    },
    {
      path = rebase_path("meta/echo_args.cml")
      dest = "echo_args.cm"
    },
    {
      path = rebase_path("meta/lifecycle.cml")
      dest = "lifecycle.cm"
    },
    {
      path = rebase_path("meta/lifecycle_full.cml")
      dest = "lifecycle_full.cm"
    },
  ]
}
