# 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/rust/rustc_library.gni")

if (is_host) {
  rustc_library("lib") {
    name = "fvdl_emulator_common"
    with_unit_tests = true
    edition = "2021"
    sources = [
      "src/args.rs",
      "src/cipd.rs",
      "src/device.rs",
      "src/graphic_utils.rs",
      "src/images.rs",
      "src/lib.rs",
      "src/portpicker.rs",
      "src/tools.rs",
      "src/types.rs",
      "src/vdl_files.rs",
      "src/vdl_proto_parser.rs",
    ]
    deps = [
      "//sdk/fidl/fuchsia.net:fuchsia.net-rustc",
      "//src/developer/ffx/config:lib",
      "//src/developer/ffx/lib/errors:lib",
      "//src/lib/fuchsia-async",
      "//src/lib/fuchsia-hyper:fuchsia-hyper",
      "//third_party/rust_crates:ansi_term",
      "//third_party/rust_crates:anyhow",
      "//third_party/rust_crates:argh",
      "//third_party/rust_crates:futures",
      "//third_party/rust_crates:home",
      "//third_party/rust_crates:hyper",
      "//third_party/rust_crates:log",
      "//third_party/rust_crates:mockall",
      "//third_party/rust_crates:regex",
      "//third_party/rust_crates:serde",
      "//third_party/rust_crates:serde_json",
      "//third_party/rust_crates:serial_test",
      "//third_party/rust_crates:shared_child",
      "//third_party/rust_crates:signal-hook",
      "//third_party/rust_crates:tempfile",
      "//third_party/rust_crates:walkdir",
      "//third_party/rust_crates:zip",
    ]
  }
}

group("tests") {
  testonly = true
  deps = [ ":lib_test($host_toolchain)" ]
}
