# 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("components") {
  testonly = true
  public_deps = [
    "//garnet/bin/glob",
    "//garnet/examples/components:component_hello_world",
    "//garnet/examples/components:component_hello_world_tests",
  ]
}

group("scenic") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:scenic",
    "//src/ui/examples",
  ]
}

group("escher") {
  testonly = true
  public_deps = [
    "//src/ui/examples/escher:escher_rainfall",
    "//src/ui/examples/escher:escher_waterfall",
  ]
}

group("all") {
  testonly = true
  public_deps = [
    "//garnet/packages/examples:benchmark",
    "//garnet/packages/examples:bluetooth",
    "//garnet/packages/examples:components",
    "//garnet/packages/examples:escher",
    "//garnet/packages/examples:eth-rs",
    "//garnet/packages/examples:fidl",
    "//garnet/packages/examples:http",
    "//garnet/packages/examples:intl",
    "//garnet/packages/examples:overnet",
    "//garnet/packages/examples:rust",
    "//garnet/packages/examples:scenic",
    "//garnet/packages/examples:speech",
    "//garnet/packages/examples:tcp",
  ]
}

group("eth-rs") {
  testonly = true
  public_deps = [ "//examples/rust/eth-rs:eth-rs" ]
}

group("http") {
  testonly = true
  public_deps = [
    "//garnet/examples/http/httpget_cpp",
    "//garnet/examples/http/httpget_rust",
    "//garnet/examples/http/postfile",
  ]
}

group("fidl") {
  testonly = true
  public_deps = [
    "//garnet/examples/fidl/echo_client_cpp",
    "//garnet/examples/fidl/echo_client_cpp_synchronous",
    "//garnet/examples/fidl/echo_client_go",
    "//garnet/examples/fidl/echo_client_llcpp",
    "//garnet/examples/fidl/echo_client_rust",
    "//garnet/examples/fidl/echo_client_rust_synchronous",
    "//garnet/examples/fidl/echo_server_c",
    "//garnet/examples/fidl/echo_server_cpp",
    "//garnet/examples/fidl/echo_server_go",
    "//garnet/examples/fidl/echo_server_llcpp",
    "//garnet/examples/fidl/echo_server_rust",
  ]
}

group("overnet") {
  testonly = true
  public_deps = [
    "//src/connectivity/overnet/examples/echo:overnet-echo",
    "//src/connectivity/overnet/examples/interface_passing:overnet-interface-passing",
  ]
}

group("speech") {
  testonly = true
  public_deps = [ "//examples/speech/tts/speak" ]
}

group("benchmark") {
  testonly = true
  public_deps = [ "//garnet/examples/benchmark" ]
}

group("intl") {
  testonly = true
  public_deps = [
    "//examples/intl/tz_version_parrot",
    "//garnet/examples/intl/manager:intl_property_manager",
    "//garnet/examples/intl/wisdom/cpp:intl_wisdom",
  ]
}

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

group("tcp") {
  testonly = true
  public_deps = [ "//garnet/examples/tcp/tcp_file_sender" ]
}

group("rust") {
  testonly = true
  public_deps = [ "//examples/rust:garnet-rust-examples" ]
}
