# Copyright 2021 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/dist/component_manifest_resources.gni")
import("//build/rust/rustc_binary.gni")

group("tests") {
  testonly = true
  deps = [
    ":cr50_agent_unittests",
    "client:tests",
  ]
}

rustc_binary("bin") {
  edition = "2021"
  output_name = "cr50_agent"
  with_unit_tests = true

  configs += [ "//build/config/rust:bootfs" ]

  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_rust",
    "//sdk/fidl/fuchsia.power.button:fuchsia.power.button_rust",
    "//sdk/fidl/fuchsia.tpm:fuchsia.tpm_rust",
    "//sdk/fidl/fuchsia.tpm.cr50:fuchsia.tpm.cr50_rust",
    "//sdk/lib/device-watcher/rust",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-fs",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:num-derive",
    "//third_party/rust_crates:num-traits",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:tracing",
  ]

  sources = [
    "src/cr50.rs",
    "src/cr50/command.rs",
    "src/cr50/command/ccd.rs",
    "src/cr50/command/pinweaver.rs",
    "src/cr50/command/wp.rs",
    "src/cr50/status.rs",
    "src/main.rs",
    "src/power_button.rs",
    "src/util.rs",
  ]
}

component_manifest_resources("manifest") {
  sources = [ "meta/cr50_agent.cml" ]
}

fuchsia_component("component") {
  component_name = "cr50_agent"
  manifest = "meta/cr50_agent.cml"
  deps = [ ":bin" ]
}

fuchsia_package("cr50_agent") {
  package_name = "cr50_agent"
  deps = [ ":component" ]
}

group("bootfs") {
  deps = [
    ":bin",
    ":manifest",
    "client:gsctool",
  ]
}

fuchsia_unittest_package("cr50_agent_unittests") {
  deps = [ ":bin_test" ]
}
