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

rustc_binary("bin") {
  name = "voila"
  edition = "2018"
  deps = [
    "//garnet/public/lib/fidl/rust/fidl",
    "//garnet/public/rust/carnelian",
    "//garnet/public/rust/fuchsia-app",
    "//garnet/public/rust/fuchsia-async",
    "//garnet/public/rust/fuchsia-scenic",
    "//garnet/public/rust/fuchsia-syslog",
    "//garnet/public/rust/fuchsia-zircon",
    "//sdk/fidl/fuchsia.auth:fuchsia.auth-rustc",
    "//sdk/fidl/fuchsia.fonts:fuchsia.fonts-rustc",
    "//sdk/fidl/fuchsia.ledger.cloud:fuchsia.ledger.cloud-rustc",
    "//sdk/fidl/fuchsia.math:fuchsia.math-rustc",
    "//sdk/fidl/fuchsia.modular:fuchsia.modular-rustc",
    "//sdk/fidl/fuchsia.modular.auth:fuchsia.modular.auth-rustc",
    "//sdk/fidl/fuchsia.modular.internal:fuchsia.modular.internal-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//sdk/fidl/fuchsia.ui.gfx:fuchsia.ui.gfx-rustc",
    "//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input-rustc",
    "//sdk/fidl/fuchsia.ui.scenic:fuchsia.ui.scenic-rustc",
    "//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views-rustc",
    "//sdk/fidl/fuchsia.vulkan.loader:fuchsia.vulkan.loader-rustc",
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:futures-preview",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:rand",
    "//zircon/public/fidl/fuchsia-cobalt:fuchsia-cobalt-rustc",
    "//zircon/public/fidl/fuchsia-logger:fuchsia-logger-rustc",
    "//zircon/public/fidl/fuchsia-tracelink:fuchsia-tracelink-rustc",
  ]
  with_unit_tests = true
}

package("voila") {
  deps = [
    ":bin",
  ]

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

  meta = [
    {
      path = rebase_path("meta/voila.cmx")
      dest = "voila.cmx"
    },
  ]
}

test_package("voila_tests") {
  deps = [
    ":bin",
    "//peridot/bin/voila/testing/session_shell",
  ]
  tests = [
    {
      name = "voila_bin_test"
    },
  ]

  binaries = [
    {
      name = "test_session_shell"
      source = "voila_test_session_shell"
    },
  ]

  meta = [
    {
      path = rebase_path("testing/session_shell/meta/session_shell.cmx")
      dest = "session_shell.cmx"
    },
  ]
}
