# 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")

group("all") {
  deps = [
    ":scene_manager_session",
    "//src/ui/scenic:scenic_pkg",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":scene_manager_session",
    ":scene_manager_session_tests",
  ]
}

rustc_binary("scene_manager_session_bin") {
  name = "scene_manager_session"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//sdk/fidl/fuchsia.input.report:fuchsia.input.report-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app-rustc",
    "//sdk/fidl/fuchsia.ui.scenic:fuchsia.ui.scenic-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/ui/fuchsia-scenic",
    "//src/session/lib/input",
    "//src/session/lib/scene_management",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
  ]
}

package("scene_manager_session") {
  deps = [ ":scene_manager_session_bin" ]

  meta = [
    {
      path = rebase_path("meta/scene_manager_session.cml")
      dest = "scene_manager_session.cm"
    },
  ]

  binaries = [
    {
      name = "scene_manager_session"
    },
  ]
}

package("scene_manager_session_tests") {
  testonly = true
  deps = [
    ":scene_manager_session_bin",
    ":scene_manager_session_bin_test",
    "//src/sys/test_adapters/rust",
  ]

  meta = [
    {
      path = "meta/scene_manager_session_bin_test.cml"
      dest = "scene_manager_session_bin_test.cm"
    },
  ]

  binaries = [
    {
      name = "rust_test_adapter"
    },
    {
      name = "scene_manager_session"
    },
  ]

  tests = [
    {
      name = "scene_manager_session_bin_test"
    },
  ]
}
