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

group("tests") {
  testonly = true
  deps = [ ":element_session_tests" ]
}

rustc_binary("element_session_bin") {
  name = "element_session"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//sdk/fidl/fuchsia.session:fuchsia.session-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/session/fidl:session_examples-rustc",
    "//src/session/lib/legacy_element_management",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [ "src/main.rs" ]
}

fuchsia_package_with_single_component("element_session") {
  manifest = "meta/element_session.cml"
  deps = [ ":element_session_bin" ]
}

fuchsia_unittest_package("element_session_tests") {
  manifest = "meta/element_session_bin_test.cml"
  deps = [ ":element_session_bin_test" ]
}
