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

group("tennis") {
  testonly = true
  deps = [
    ":tennis_service",
    ":tennis_service_bin",
    ":tennis_sysmgr_config",
    ":tennis_viewer",
    ":tennis_viewer_bin",
    "bots",
  ]
}

fuchsia_package_with_single_component("tennis_service") {
  deps = [ ":tennis_service_bin" ]
  manifest = "meta/tennis_service.cmx"
}

rustc_binary("tennis_service_bin") {
  name = "tennis_service"
  with_unit_tests = true
  edition = "2018"

  sources = [
    "src/game.rs",
    "src/main.rs",
    "src/tennis_service.rs",
  ]

  deps = [
    "//sdk/fidl/fuchsia.game.tennis:fuchsia.game.tennis-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",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:rand",
  ]
}

fuchsia_package_with_single_component("tennis_viewer") {
  deps = [ ":tennis_viewer_bin" ]
  manifest = "meta/tennis_viewer.cmx"
}

rustc_binary("tennis_viewer_bin") {
  name = "tennis_viewer"
  edition = "2018"

  source_root = "viewer/main.rs"
  sources = [ "viewer/main.rs" ]

  deps = [
    "//sdk/fidl/fuchsia.game.tennis:fuchsia.game.tennis-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",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:rand",
  ]
}

config_data("tennis_sysmgr_config") {
  for_pkg = "sysmgr"
  outputs = [ "tennis.config" ]
  sources = [ "tennis_sysmgr.config" ]
}
