# 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_binary.gni")
import("//build/rust/rustc_test.gni")
import("//build/test/test_package.gni")
import("//build/testing/host_test.gni")

if (is_host) {
  common_sources = [ "src/main.rs" ]

  rustc_binary("clidoc_bin") {
    name = "clidoc"
    edition = "2020"
    sources = common_sources
  }

  rustc_test("clidoc_bin_test") {
    source_root = "src/main.rs"
    deps = [ ":clidoc_bin" ]
    sources = common_sources
  }
}

install_host_tools("clidoc") {
  deps = [ ":clidoc_bin($host_toolchain)" ]

  outputs = [ "clidoc" ]
}

group("tests") {
  testonly = true

  deps = [ ":clidoc_bin_test($host_toolchain)" ]
}
