# 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.
#
# WARNING: This file was machine-generated from previous json files and
# will eventually be deleted.

group("broadcom") {
  testonly = true
  public_deps = [
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac",
    "//src/connectivity/wlan/drivers/wlanif",
    "//src/connectivity/wlan/drivers/wlanphy",
  ]
}

group("bluetooth_hid") {
  testonly = true
  public_deps = [ "//src/connectivity/bluetooth/profiles/bt-hog" ]
}

group("tracing") {
  testonly = true
  public_deps = [
    "//garnet/bin/cpuperf_provider",
    "//garnet/bin/cpuperf_provider:report_generators",
    "//garnet/bin/ktrace_provider",
    "//garnet/bin/trace",
    "//garnet/bin/trace2json",
    "//garnet/bin/trace_manager",
    "//garnet/bin/traceutil",
    "//src/developer/memory/monitor",
  ]
}

group("bluetooth_intel") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:bluetooth_hci",
    "//src/connectivity/bluetooth/hci/intel",
  ]
}

# WARNING: Known to topaz.
group("scenic") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:factory_reset",
    "//garnet/packages/prod:sysmem_connector",
    "//garnet/packages/prod:vulkan",
    "//src/ui/bin/activity",
    "//src/ui/bin/ime:ime_service",
    "//src/ui/bin/root_presenter",
    "//src/ui/bin/root_presenter:configs",
    "//src/ui/scenic",
  ]
}

group("cpuperf") {
  testonly = true
  public_deps = [
    "//garnet/bin/cpuperf",
    "//garnet/bin/cpuperf/print:host_cpuperf_print",
  ]
}

# WARNING: Known to topaz.
group("drivers") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:bluetooth_drivers",
    "//garnet/packages/prod:openthread",
    "//garnet/packages/prod:vulkan",
    "//garnet/packages/prod:wlan_drivers",
    "//src/camera/drivers",
    "//src/connectivity/ppp:drivers",
    "//src/connectivity/telephony:drivers",
    "//src/graphics/drivers",
    "//src/media/drivers",
  ]
  if (target_cpu == "arm64") {
    public_deps += [ "//garnet/packages/prod:amlogic_video_decoder" ]
  }
  if (target_cpu == "x64") {
    public_deps += [
      "//garnet/packages/prod:goldfish-vulkan",
      "//garnet/packages/prod:magma-intel-gen",
    ]
  }
}

group("openthread") {
  testonly = true
  public_deps = [ "//src/connectivity/openthread/drivers/ot-radio:openthread" ]
}

group("all") {
  testonly = true
  public_deps = [
    ":drivers",
    "//garnet/packages/prod:atheros",
    "//garnet/packages/prod:bluetooth_a2dp",
    "//garnet/packages/prod:bluetooth_all",
    "//garnet/packages/prod:bluetooth_atheros",
    "//garnet/packages/prod:bluetooth_avrcp",
    "//garnet/packages/prod:bluetooth_core",
    "//garnet/packages/prod:bluetooth_hci",
    "//garnet/packages/prod:bluetooth_hid",
    "//garnet/packages/prod:bluetooth_intel",
    "//garnet/packages/prod:bluetooth_profiles",
    "//garnet/packages/prod:broadcom",
    "//garnet/packages/prod:chrealm",
    "//garnet/packages/prod:cmdutils",
    "//garnet/packages/prod:cobalt_client",
    "//garnet/packages/prod:cpuperf",
    "//garnet/packages/prod:debug_agent",
    "//garnet/packages/prod:drivers",
    "//garnet/packages/prod:factory_reset",
    "//garnet/packages/prod:far",
    "//garnet/packages/prod:guest_runner",
    "//garnet/packages/prod:insntrace",
    "//garnet/packages/prod:iquery",
    "//garnet/packages/prod:magma-arm-mali",
    "//garnet/packages/prod:magma-img-rgx-mt8167",
    "//garnet/packages/prod:magma-qcom-adreno",
    "//garnet/packages/prod:memory_monitor",
    "//garnet/packages/prod:network-speed-test",
    "//garnet/packages/prod:openthread",
    "//garnet/packages/prod:ralink",
    "//garnet/packages/prod:realtek",
    "//garnet/packages/prod:run",
    "//garnet/packages/prod:sbase",
    "//garnet/packages/prod:scenic",
    "//garnet/packages/prod:setui_client",
    "//garnet/packages/prod:sysmem_connector",
    "//garnet/packages/prod:tee_manager",
    "//garnet/packages/prod:telephony",
    "//garnet/packages/prod:terminal",
    "//garnet/packages/prod:test_runner",
    "//garnet/packages/prod:tiles",
    "//garnet/packages/prod:tracing",
    "//garnet/packages/prod:vboot_reference",
    "//garnet/packages/prod:vim",
    "//garnet/packages/prod:wlan_drivers",
    "//garnet/packages/prod:wlanif",
    "//garnet/packages/prod:wlanphy",
    "//src/connectivity/network/dhcp:dhcpd",
    "//src/connectivity/network/mdns/bundles:services",
    "//src/connectivity/network/mdns/bundles:utils",
    "//src/connectivity/network/netstack:tools",
    "//src/connectivity/telephony:drivers",
    "//src/connectivity/wlan:service",
    "//src/connectivity/wlan:tools",
    "//src/developer/memory/mem",
    "//src/fonts",
    "//src/power:battery",
    "//src/ui/a11y:a11y",
  ]
}

group("atheros") {
  testonly = true
  public_deps = [
    "//src/connectivity/wlan/drivers/third_party/atheros/ath10k:ath10k",
    "//src/connectivity/wlan/drivers/wlan",
    "//src/connectivity/wlan/drivers/wlanphy",
  ]
}

group("wifi_intel") {
  testonly = true
  public_deps = [
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi:iwlwifi",
    "//src/connectivity/wlan/drivers/wlan",
    "//src/connectivity/wlan/drivers/wlanphy",
  ]
}

group("realtek") {
  testonly = true
  public_deps = [
    "//src/connectivity/wlan/drivers/realtek/rtl88xx",
    "//src/connectivity/wlan/drivers/wlan",
    "//src/connectivity/wlan/drivers/wlanphy",
  ]
}

group("memory_monitor") {
  testonly = true
  public_deps = [
    "//garnet/packages/config:services",
    "//src/developer/memory/monitor",
  ]
}

group("insntrace") {
  testonly = true
  public_deps = [
    "//garnet/bin/insntrace",
    "//garnet/bin/insntrace:host_insntrace_print",
  ]
}

group("guest_runner") {
  testonly = true
  public_deps = [
    "//garnet/packages/config:network",
    "//src/sys/pkg/bin/amber",
    "//src/virtualization/bin/guest:guest",
    "//src/virtualization/bin/guest_manager:guest_manager",
    "//src/virtualization/bin/guest_runner:guest_runner",
    "//src/virtualization/bin/vmm",
    "//src/virtualization/bin/vmm/device:virtio_balloon",
    "//src/virtualization/bin/vmm/device:virtio_block",
    "//src/virtualization/bin/vmm/device:virtio_console",
    "//src/virtualization/bin/vmm/device:virtio_gpu",
    "//src/virtualization/bin/vmm/device:virtio_input",
    "//src/virtualization/bin/vmm/device:virtio_magma",
    "//src/virtualization/bin/vmm/device:virtio_net",
    "//src/virtualization/bin/vmm/device:virtio_rng",
    "//src/virtualization/bin/vmm/device:virtio_wl",
  ]
}

group("usb_video") {
  testonly = true
  public_deps = [ "//src/camera/drivers/usb_video" ]
}

group("bluetooth_atheros") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:bluetooth_hci",
    "//src/connectivity/bluetooth/hci/atheros",
  ]
}

group("bluetooth_hci") {
  testonly = true
  public_deps = [ "//src/connectivity/bluetooth/hci/passthrough" ]
}

group("cmdutils") {
  testonly = true
  public_deps = [
    "//examples/cowsay",
    "//garnet/bin/time",
    "//garnet/bin/uname",
    "//garnet/packages/prod:sbase",
    "//garnet/packages/prod:vim",
  ]
}

group("bluetooth_drivers") {
  testonly = true
  public_deps = [
    "//src/connectivity/bluetooth/core/bt-host",
    "//src/connectivity/bluetooth/hci/atheros",
    "//src/connectivity/bluetooth/hci/emulator",
    "//src/connectivity/bluetooth/hci/intel",
    "//src/connectivity/bluetooth/hci/passthrough",
    "//src/connectivity/bluetooth/profiles/bt-hog",
  ]
}

group("vboot_reference") {
  testonly = true
  public_deps = [
    "//garnet/tools/vboot_reference:cgpt_host",
    "//garnet/tools/vboot_reference:futility_host",
  ]
}

group("cobalt_client") {
  testonly = true
  public_deps = [
    "//src/cobalt/bin/app:cobalt",
    "//src/cobalt/bin/system-metrics:cobalt_system_metrics",
  ]
}

group("bluetooth_profiles") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:bluetooth_a2dp",
    "//garnet/packages/prod:bluetooth_avrcp",
    "//garnet/packages/prod:bluetooth_hid",
  ]
}

group("network_time") {
  testonly = true
  public_deps = [ "//garnet/bin/network_time_service" ]
}

group("vim") {
  testonly = true
  public_deps = [ "//third_party/vim" ]
}

group("telephony") {
  testonly = true
  public_deps = [
    "//src/connectivity/telephony/drivers/qmi-fake-transport",
    "//src/connectivity/telephony/drivers/qmi-usb-transport",
    "//src/connectivity/telephony/ril-at",
    "//src/connectivity/telephony/ril-at:ril-at-tests",
    "//src/connectivity/telephony/ril-qmi",
    "//src/connectivity/telephony/ril-qmi:ril-qmi-tests",
    "//src/connectivity/telephony/telephony",
    "//src/connectivity/telephony/tools/ril-ctl",
  ]
}

group("tiles") {
  testonly = true
  public_deps = [ "//src/ui/tools/tiles" ]
}

group("vulkan") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:sysmem_connector",
    "//src/graphics/bin/vulkan_loader",
  ]
}

group("run") {
  testonly = true
  public_deps = [ "//garnet/bin/run" ]
}

group("chrealm") {
  testonly = true
  public_deps = [ "//garnet/bin/chrealm" ]
}

group("bluetooth_avrcp") {
  testonly = true
  public_deps = [ "//src/connectivity/bluetooth/profiles/bt-avrcp" ]
}

group("bluetooth_a2dp") {
  testonly = true
  public_deps = [ "//src/connectivity/bluetooth/profiles/bt-a2dp-sink" ]
}

group("network-speed-test") {
  testonly = true
  public_deps = [ "//garnet/bin/network-speed-test" ]
}

group("sbase") {
  testonly = true
  public_deps = [
    "//third_party/sbase:basename",
    "//third_party/sbase:cal",
    "//third_party/sbase:cat",
    "//third_party/sbase:cksum",
    "//third_party/sbase:cmp",
    "//third_party/sbase:cols",
    "//third_party/sbase:comm",
    "//third_party/sbase:cp",
    "//third_party/sbase:cut",
    "//third_party/sbase:date",
    "//third_party/sbase:dirname",
    "//third_party/sbase:du",
    "//third_party/sbase:echo",
    "//third_party/sbase:ed",
    "//third_party/sbase:env",
    "//third_party/sbase:expand",
    "//third_party/sbase:expr",
    "//third_party/sbase:false",
    "//third_party/sbase:find",
    "//third_party/sbase:fold",
    "//third_party/sbase:grep",
    "//third_party/sbase:head",
    "//third_party/sbase:hostname",
    "//third_party/sbase:join",
    "//third_party/sbase:link",
    "//third_party/sbase:ls",
    "//third_party/sbase:md5sum",
    "//third_party/sbase:mkdir",
    "//third_party/sbase:mktemp",
    "//third_party/sbase:mv",
    "//third_party/sbase:nl",
    "//third_party/sbase:od",
    "//third_party/sbase:paste",
    "//third_party/sbase:pathchk",
    "//third_party/sbase:printenv",
    "//third_party/sbase:printf",
    "//third_party/sbase:pwd",
    "//third_party/sbase:readlink",
    "//third_party/sbase:rev",
    "//third_party/sbase:rm",
    "//third_party/sbase:rmdir",
    "//third_party/sbase:sed",
    "//third_party/sbase:seq",
    "//third_party/sbase:sha1sum",
    "//third_party/sbase:sha224sum",
    "//third_party/sbase:sha256sum",
    "//third_party/sbase:sha384sum",
    "//third_party/sbase:sha512-224sum",
    "//third_party/sbase:sha512-256sum",
    "//third_party/sbase:sha512sum",
    "//third_party/sbase:sleep",
    "//third_party/sbase:sort",
    "//third_party/sbase:split",
    "//third_party/sbase:sponge",
    "//third_party/sbase:strings",
    "//third_party/sbase:sync",
    "//third_party/sbase:tail",
    "//third_party/sbase:tar",
    "//third_party/sbase:tee",
    "//third_party/sbase:test",
    "//third_party/sbase:tftp",
    "//third_party/sbase:touch",
    "//third_party/sbase:tr",
    "//third_party/sbase:true",
    "//third_party/sbase:tsort",
    "//third_party/sbase:tty",
    "//third_party/sbase:unexpand",
    "//third_party/sbase:uniq",
    "//third_party/sbase:unlink",
    "//third_party/sbase:uudecode",
    "//third_party/sbase:uuencode",
    "//third_party/sbase:wc",
    "//third_party/sbase:which",
    "//third_party/sbase:whoami",
    "//third_party/sbase:xargs",
    "//third_party/sbase:xinstall",
    "//third_party/sbase:yes",
  ]
}

group("test_runner") {
  testonly = true
  public_deps = [
    "//garnet/bin/test_runner:run_integration_tests",
    "//garnet/bin/test_runner:run_test",
  ]
}

group("terminal") {
  testonly = true
  public_deps = [ "//garnet/bin/terminal" ]
}

group("wlanif") {
  testonly = true
  public_deps = [
    "//src/connectivity/wlan/drivers/wlan",
    "//src/connectivity/wlan/drivers/wlanif",
  ]
}

if (target_cpu == "arm64") {
  group("amlogic_video_decoder") {
    testonly = true
    public_deps = [
      "//src/media/drivers/amlogic_decoder",
      "//src/media/drivers/amlogic_decoder:amlogic_video_decoder_test_build",
    ]
  }
}

group("wlanphy") {
  testonly = true
  public_deps = [
    "//src/connectivity/wlan/drivers/wlan",
    "//src/connectivity/wlan/drivers/wlanphy",
  ]
}

group("far") {
  testonly = true
  public_deps = [
    "//src/sys/pkg/bin/far",
    "//src/sys/pkg/bin/far:host",
  ]
}

group("ralink") {
  testonly = true
  public_deps = [
    "//src/connectivity/wlan/drivers/mediatek/ralink",
    "//src/connectivity/wlan/drivers/wlan",
    "//src/connectivity/wlan/drivers/wlanphy",
  ]
}

group("iquery") {
  testonly = true
  public_deps = [ "//src/diagnostics/iquery" ]
}

group("bluetooth_core") {
  testonly = true
  public_deps = [
    "//src/connectivity/bluetooth/core/bt-gap",
    "//src/connectivity/bluetooth/core/bt-host",
    "//src/connectivity/bluetooth/core/bt-init",
    "//src/connectivity/bluetooth/tools/bt-snoop",
  ]
}

group("debug_agent") {
  testonly = true
  public_deps = [ "//src/developer/debug/debug_agent" ]
}

group("sysmem_connector") {
  testonly = true
  public_deps = [ "//garnet/bin/sysmem_connector" ]
}

group("wlan_drivers") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:atheros",
    "//garnet/packages/prod:broadcom",
    "//garnet/packages/prod:ralink",
    "//garnet/packages/prod:realtek",
    "//garnet/packages/prod:wifi_intel",
    "//garnet/packages/prod:wlanif",
    "//garnet/packages/prod:wlanphy",
  ]
}

group("bluetooth_all") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:bluetooth_atheros",
    "//garnet/packages/prod:bluetooth_core",
    "//garnet/packages/prod:bluetooth_hci",
    "//garnet/packages/prod:bluetooth_intel",
    "//garnet/packages/prod:bluetooth_profiles",
  ]
}

group("magma-arm-mali") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:sysmem_connector",
    "//src/graphics/lib/magma/gnbuild/magma-arm-mali:magma-vulkan",
  ]
}

if (target_cpu == "x64") {
  group("magma-intel-gen") {
    testonly = true
    public_deps = [
      "//garnet/packages/prod:sysmem_connector",
      "//src/graphics/lib/magma/gnbuild/magma-intel-gen:magma-vulkan",
    ]
  }
}

group("magma-img-rgx-mt8167") {
  testonly = true
  public_deps =
      [ "//src/graphics/lib/magma/gnbuild/magma-img-rgx:magma-vulkan" ]
}

group("magma-qcom-adreno") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:sysmem_connector",
    "//src/graphics/lib/magma/gnbuild/magma-qcom-adreno:magma-vulkan",
  ]
}

group("magma-vsl-gc") {
  testonly = true
  public_deps = [ "//src/graphics/lib/magma/gnbuild/magma-vsl-gc:magma-vulkan" ]
}

group("setui_client") {
  testonly = true
  public_deps = [ "//garnet/bin/setui_client" ]
}

group("tee_manager") {
  testonly = true
  public_deps = [
    "//src/security/tee_manager",
    "//src/security/tee_manager:config",
  ]
}

group("goldfish-vulkan") {
  testonly = true
  public_deps = [ "//garnet/lib/goldfish-vulkan/gnbuild:goldfish-vulkan" ]
}

group("factory_reset") {
  testonly = true
  public_deps = [
    "//src/recovery/factory_reset",
    "//src/recovery/factory_reset:configs",
  ]
}
