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

group("tests") {
  testonly = true
  deps = [ ":graphical-session-unittests" ]
}

rustc_binary("bin") {
  edition = "2021"
  output_name = "graphical-session"

  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.images:fuchsia.images-rustc",
    "//sdk/fidl/fuchsia.ui.gfx:fuchsia.ui.gfx-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/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:png",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [
    "src/app.rs",
    "src/graphics_util.rs",
    "src/main.rs",
    "src/view.rs",
  ]
}

resource("whale") {
  sources = [ "resources/whale.png" ]
  outputs = [ "data/whale.png" ]
}

fuchsia_component("component") {
  component_name = "graphical-session"
  manifest = "meta/graphical-session.cml"
  deps = [
    ":bin",
    ":whale",
  ]
}

fuchsia_package("graphical-session") {
  deps = [ ":component" ]
}

fuchsia_unittest_package("graphical-session-unittests") {
  deps = [ ":bin_test" ]
}
