# Copyright 2020 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/host.gni")
import("//build/rust/rustc_library.gni")
import("//build/testing/host_test.gni")

if (is_host) {
  rustc_library("utils") {
    name = "scrutiny_utils"
    with_unit_tests = true
    edition = "2018"
    visibility = [ "//src/security/scrutiny/*" ]
    deps = [
      "//src/security/scrutiny/lib/framework",
      "//third_party/rust_crates:anyhow",
      "//third_party/rust_crates:bincode",
      "//third_party/rust_crates:byteorder",
      "//third_party/rust_crates:hex",
      "//third_party/rust_crates:libc",
      "//third_party/rust_crates:log",
      "//third_party/rust_crates:serde",
      "//third_party/rust_crates:thiserror",
    ]

    non_rust_deps = [
      "//src/lib/chunked-compression",
      "//src/security/scrutiny/lib/utils/ffi-bridge",
      "//third_party/zstd",
    ]

    sources = [
      "src/blobfs.rs",
      "src/bootfs.rs",
      "src/env.rs",
      "src/fvm.rs",
      "src/lib.rs",
      "src/usage.rs",
      "src/zbi.rs",
      "src/zstd.rs",
    ]
  }
}

group("tests") {
  testonly = true
  public_deps = [ ":utils_test($host_toolchain)" ]
}
