# 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/config.gni")
import("//build/package.gni")
import("//build/rust/rustc_binary.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

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

  deps = [
    ":bin",
  ]

  binaries = [
    {
      name = "tee_manager"
      dest = "tee_manager"
    },
  ]
}

rustc_binary("bin") {
  name = "tee_manager"
  edition = "2018"

  deps = [
    "//garnet/public/lib/fidl/rust/fidl",
    "//garnet/public/rust/fdio",
    "//garnet/public/rust/fuchsia-async",
    "//garnet/public/rust/fuchsia-component",
    "//garnet/public/rust/fuchsia-syslog",
    "//garnet/public/rust/fuchsia-vfs/fuchsia-vfs-watcher",
    "//garnet/public/rust/fuchsia-zircon",
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:futures-preview",
    "//zircon/public/fidl/fuchsia-hardware-tee:fuchsia-hardware-tee-rustc",
    "//zircon/public/fidl/fuchsia-tee:fuchsia-tee-rustc",
    "//zircon/public/fidl/fuchsia-tee-manager:fuchsia-tee-manager-rustc",
  ]
}

config_data("config") {
  for_pkg = "sysmgr"
  sources = [
    "tee_manager.config",
  ]
}

test_package("optee_test") {
  deps = [
    ":optee_test_bin",
  ]

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

  tests = [
    {
      name = "optee_test"
      environments = [ astro_env ]
    },
  ]
}

executable("optee_test_bin") {
  testonly = true
  output_name = "optee_test"

  sources = [
    "test/optee_test.cc",
  ]

  deps = [
    "//garnet/public/lib/fxl/test:gtest_main",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl",
    "//zircon/public/fidl/fuchsia-tee",
    "//zircon/public/lib/tee-client-api",
  ]
}
