# 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 = [
    "//build/tools/formatjson5:install($host_toolchain)",
    "//garnet/bin/run_test_component:run-test-component",
    "//garnet/go/src/fidlmerge:host",
    "//garnet/packages/prod:cmdutils",
    "//garnet/packages/prod:debug_agent",
    "//garnet/packages/prod:far",
    "//garnet/packages/prod:run",
    "//garnet/packages/prod:tracing",
    "//garnet/packages/testing:all",
    "//src/camera:tools",
    "//src/connectivity:tools",
    "//src/connectivity/bluetooth/tools",
    "//src/connectivity/bluetooth/tools/bt-snoop",
    "//src/developer/debug/zxdb:zxdb_host",
    "//src/developer/fastboot",
    "//src/developer/ffx:ffx_tool",
    "//src/developer/ffx:runtime",
    "//src/developer/forensics/exceptions/limbo_client:limbo-client",
    "//src/developer/kcounter_inspect",
    "//src/developer/memory/mem",
    "//src/developer/system_monitor/bin/dockyard_host:host_tools",
    "//src/developer/system_monitor/bin/harvester:system_monitor_harvester",
    "//src/devices/bind/debugger",
    "//src/devices/tools/banjo:banjo_bin",
    "//src/diagnostics/tool:diag_tool_host($host_toolchain)",
    "//src/diagnostics/triage:install($host_toolchain)",
    "//src/graphics/lib/magma:magma-tools",
    "//src/lib/chunked-compression:chunked-compress-host-tool",
    "//src/lib/icu:tools",
    "//src/media/bundles:tools",
    "//src/recovery/factory_reset:tools",
    "//src/security/scrutiny",
    "//src/sys/component_manager_for_test",
    "//src/sys/locate",
    "//src/sys/pkg/bin/pm",
    "//src/sys/pkg/bin/pm:host",
    "//src/sys/run_test_suite",
    "//src/sys/tools/activity-ctl",
    "//src/sys/tools/cs",
    "//src/sys/tools/log",
    "//src/sys/tools/runmany",
    "//src/sys/tools/step",
    "//src/ui/tools:scenic",
    "//src/ui/tools/tiles_ctl",
    "//third_party/boringssl:boringssl_tool",
    "//third_party/cobalt:host",
    "//third_party/curl",
    "//third_party/iperf",
    "//third_party/openssh-portable:openssh-tools",
    "//tools",
    "//tools/check-licenses:host($host_toolchain)",
    "//tools/whereiscl:host($host_toolchain)",
  ]
  deps = [ "//build/validate:non_production_tag" ]
}

# Same as "tools" above, but for tools that are hosted by the system package.
group("tools-system") {
  testonly = true
  deps = [ "//src/connectivity/bluetooth/hci/emulator" ]
}

group("build_infra") {
  testonly = true
  public_deps = [ "//tools:build_infra" ]
}

group("test_infra") {
  testonly = true
  public_deps = [ "//tools:test_infra" ]
}

group("tests") {
  testonly = true
  public_deps = [
    "fidl:tests",
    "//examples:tests",
    "//garnet/packages/tests:all",
    "//scripts:tests",
    "//sdk:tests",
    "//src:tests",
    "//third_party/go:tests",
    "//tools:tests",
    "//topaz:tests",
  ]
}

group("kitchen_sink") {
  testonly = true
  public_deps = [
    ":tests",
    "//bundles:tools",
    "//examples",
    "//garnet/packages:all",
    "//garnet/packages/config:amber",
    "//garnet/packages/config:network",
    "//garnet/packages/config:openssh_keys",
    "//garnet/packages/config:thermd",
    "//src/connectivity/telephony",
    "//src/graphics/examples",
    "//src/media/audio/bundles:virtual_audio_driver",
    "//src/media/bundles:examples",
    "//src/media/bundles:services",
    "//src/media/bundles:tools",
    "//topaz",
  ]
}

# While we don't necessarily want to run all tests on devices with limited
# flash, we should run a few amlogic-HW-dependent tests on astro and/or
# sherlock.  This list is those tests.  This list intentionally doesn't include
# all of :tests above.
group("amlogic_hw_dependent_tests") {
  testonly = true

  public_deps = [
    "//src/media/codec:hw_dependent_tests",

    # Verify communication with amlogic optee.
    "//src/security/tee_manager:optee_smoke_test",
  ]
}

# Binaries that form the base of every single product.
group("bootstrap") {
  deps = [
    "//src/bringup/bundles:bootstrap",
    "//src/devices/bundles:bootstrap-bin",
    "//src/power/bundles:bootstrap",
    "//src/storage/bundles:bootstrap",
    "//src/sys/bundles:bootstrap",
  ]
}

# Binaries that form the base of every single zedboot image.
group("bootstrap-zedboot") {
  deps = [
    "//src/bringup/bundles:zedboot",
    "//src/devices/bundles:bootstrap-bin",
    "//src/power/bundles:bootstrap",
    "//src/storage/bundles:bootstrap",
    "//src/sys/bundles:bootstrap",
  ]
}

# Debugging tools installed on the boot image.
group("debugging") {
  deps = [
    "//src/bringup/bundles:debugging",
    "//src/connectivity/bundles:debugging",
    "//src/developer/bundles:debugging",
    "//src/devices/bundles:debugging",
    "//src/diagnostics/bundles:debugging",
    "//src/storage/bundles:debugging",
    "//src/sys/bundles:debugging",
    "//src/zircon/bundles:debugging",
  ]
}

# Diagnostics tools installed on the boot image.
group("diagnostics-eng") {
  deps = [ "//src/diagnostics/bundles:dev-tools" ]
}

# Group including all drivers in the fuchsia repo. Useful for ensuring
# all driver continue to build without needing to build every board.
group("drivers-build-only") {
  testonly = true
  deps = [
    "//examples/drivers/fifo:demo-fifo",
    "//src/camera:drivers",
    "//src/connectivity/bundles:drivers",
    "//src/devices/bundles:drivers",
    "//src/graphics/bundles:drivers",
    "//src/lib/isolated_devmgr:crash-device",
    "//src/media/bundles:drivers",
    "//src/ui/bundles:drivers",
    "//zircon/third_party/dev/ethernet/e1000:e1000",
  ]
}
