# 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",
  ]
  tests = [
    {
      name = "voila_bin_test"
    },
  ]
}
