# 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")

group("component_manager_config") {
  testonly = true

  public_deps = [ ":install" ]
}

group("tests") {
  testonly = true

  public_deps = [ ":generate_config_bin_test($host_toolchain)" ]
}

install_host_tools("install") {
  deps = [ ":generate_config_bin($host_toolchain)" ]
  outputs = [ "generate_config" ]
}

if (is_host) {
  rustc_binary("generate_config_bin") {
    name = "generate_config"
    with_unit_tests = true
    edition = "2021"
    deps = [
      "//src/lib/assembly/component_manager_config",
      "//third_party/rust_crates:argh",
      "//tools/lib/cml",
    ]

    sources = [ "src/main.rs" ]
  }
}
