# 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.

group("tools") {
  testonly = true

  public_deps = [
    ":infratools",
    "//tools/bindc:host",
    "//tools/blackout:all",
    "//tools/bootserver_old:host($host_toolchain)",
    "//tools/build",
    "//tools/component_id_index($host_toolchain)",
    "//tools/create:install($host_toolchain)",
    "//tools/debroot($host_toolchain)",
    "//tools/doc_checker",
    "//tools/fidl/fidldoc($host_toolchain)",
    "//tools/fidl/fidlgen_go:host",
    "//tools/fidl/fidlgen_hlcpp:host",
    "//tools/fidl/fidlgen_libfuzzer:host",
    "//tools/fidl/fidlgen_rust:host",
    "//tools/fidl/fidlgen_syzkaller:host",
    "//tools/fidl/gidl:host",
    "//tools/fidlcat:fidlcat_host",
    "//tools/loglistener:host($host_toolchain)",
    "//tools/make-efi:host",
    "//tools/make-fuchsia-vol:host",
    "//tools/net/dev_finder:host",
    "//tools/netprotocol($host_toolchain)",
  ]
}

group("infratools") {
  testonly = true

  # Building with the following toolchains ensures that, for the associated
  # tools, there will be at most one tool for every (name, cpu, os) tuple.
  toolchains = []
  if (host_os == "linux") {
    toolchains += [
      host_arm64_toolchain,
      host_x64_toolchain,
    ]
  } else if (host_os == "mac") {
    toolchains += [ host_toolchain ]
  }

  public_deps = []
  foreach(toolchain, toolchains) {
    public_deps += [
      "//tools/artifactory($toolchain)",
      "//tools/bootserver($toolchain)",
      "//tools/botanist($toolchain)",
      "//tools/build:tools($toolchain)",
      "//tools/debug:tools($toolchain)",
      "//tools/integration:tools($toolchain)",
      "//tools/size_checker/cmd:host",
      "//tools/testing:tools($toolchain)",
      "//zircon/tools/fvm($toolchain)",
      "//zircon/tools/minfs($toolchain)",
    ]
  }
}

group("tests") {
  testonly = true

  deps = [
    "//tools/artifactory:tests",
    "//tools/bindc:tests",
    "//tools/blackout:tests",
    "//tools/bootserver:tests($host_toolchain)",
    "//tools/bootserver_old/tests($host_toolchain)",
    "//tools/botanist:tests($host_toolchain)",
    "//tools/build:tests($host_toolchain)",
    "//tools/component_id_index:tests($host_toolchain)",
    "//tools/create:tests($host_toolchain)",
    "//tools/debug:tests($host_toolchain)",
    "//tools/doc_checker:tests",
    "//tools/fidlcat:fidlcat_host_tests($host_toolchain)",
    "//tools/fidlcat/tests",
    "//tools/fuzz:tests($host_toolchain)",
    "//tools/integration:tests($host_toolchain)",
    "//tools/lib:tests($host_toolchain)",
    "//tools/net:tests($host_toolchain)",
    "//tools/qemu:tests($host_toolchain)",
    "//tools/serial:tests($host_toolchain)",
    "//tools/size_checker/cmd:tests",
    "//tools/testing:tests($host_toolchain)",
    "//tools/zedmon:tests",
  ]
}
