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

if (host_toolchain == current_toolchain) {
  rustc_binary("bin") {
    name = "bindc"
    edition = "2018"

    with_unit_tests = true
    test_environments = [ host_env ]

    deps = [
      "//src/devices/bind/debugger:lib",
      "//third_party/rust_crates:anyhow",
      "//third_party/rust_crates:structopt",
    ]

    sources = [ "src/main.rs" ]

    inputs = [
      "src/templates/bind.h.template",
      "src/templates/fidl.template",
    ]
  }
}

install_host_tools("host") {
  deps = [ ":bin($host_toolchain)" ]
  outputs = [ "bindc" ]
}

group("tests") {
  testonly = true
  deps = [
    ":bin_test($host_toolchain)",
    "./examples:tests",
  ]
}
