# 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("carnelian") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:scenic",
    "//garnet/public/rust/carnelian:button_rs",
    "//garnet/public/rust/carnelian:drawing_rs",
    "//garnet/public/rust/carnelian:embedding_rs",
    "//garnet/public/rust/carnelian:perf_test_01_rs",
    "//garnet/public/rust/carnelian:perf_test_02_rs",
    "//garnet/public/rust/carnelian:perf_test_03_rs",
    "//garnet/public/rust/carnelian:perf_test_04_rs",
    "//garnet/public/rust/carnelian:spinning_square_rs",
  ]
}

group("scenic") {
  testonly = true
  public_deps = [
    "//garnet/bin/ui/sketchy:sketchy_service",
    "//garnet/examples/ui:bouncing_ball",
    "//garnet/examples/ui:direct_input",
    "//garnet/examples/ui:direct_input_child",
    "//garnet/examples/ui:embedder",
    "//garnet/examples/ui:pose_buffer_presenter",
    "//garnet/examples/ui:scenic_dev_app",
    "//garnet/examples/ui:shadertoy_client",
    "//garnet/examples/ui:shadertoy_service",
    "//garnet/examples/ui:simplest_app",
    "//garnet/examples/ui:simplest_app",
    "//garnet/examples/ui:simplest_embedder",
    "//garnet/examples/ui:sketchy_client",
    "//garnet/examples/ui:spinning_square_view",
    "//garnet/examples/ui:standalone_app",
    "//garnet/examples/ui:tile_view",
    "//garnet/examples/ui:video_display",
    "//garnet/examples/ui:yuv_to_image_pipe",
    "//garnet/packages/prod:scenic",
  ]
}

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

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

group("all") {
  testonly = true
  public_deps = [
    "//garnet/packages/examples:benchmark",
    "//garnet/packages/examples:bluetooth",
    "//garnet/packages/examples:carnelian",
    "//garnet/packages/examples:components",
    "//garnet/packages/examples:crust",
    "//garnet/packages/examples:escher",
    "//garnet/packages/examples:eth-rs",
    "//garnet/packages/examples:fidl",
    "//garnet/packages/examples:http",
    "//garnet/packages/examples:inspection",
    "//garnet/packages/examples:intl",
    "//garnet/packages/examples:media",
    "//garnet/packages/examples:mediaplayer",
    "//garnet/packages/examples:mediasession",
    "//garnet/packages/examples:netstack",
    "//garnet/packages/examples:overnet",
    "//garnet/packages/examples:rust",
    "//garnet/packages/examples:scenic",
    "//garnet/packages/examples:speech",
    "//garnet/packages/examples:tcp",
    "//garnet/packages/examples:vkcube_on_fb",
    "//garnet/packages/examples:vkcube_on_scenic",
    "//garnet/packages/examples:vklatency_on_fb",
    "//garnet/packages/examples:vklatency_on_scenic",
    "//garnet/packages/examples:vulkaninfo",
  ]
}

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

group("netstack") {
  testonly = true
  public_deps = [
    "//garnet/examples/network:nc",
  ]
}

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

group("fidl") {
  testonly = true
  public_deps = [
    "//garnet/examples/fidl/echo_client_cpp",
    "//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",
    "//garnet/go/src/fidl/examples",
  ]
}

group("inspection") {
  testonly = true
  public_deps = [
    "//garnet/examples/inspection:example_server",
    "//garnet/examples/inspection:example_server_unittests",
  ]
}

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

group("mediaplayer") {
  testonly = true
  public_deps = [
    "//garnet/examples/mediaplayer:mediaplayer_examples",
  ]
}

group("media") {
  testonly = true
  public_deps = [
    "//examples/media/audio/fx",
    "//examples/media/audio/simple_sine",
    "//examples/media/audio/sync_sine",
    "//examples/media/audio/tones",
    "//examples/media/audio/vu_meter",
    "//garnet/examples/camera/camera_client:camera_client",
    "//garnet/examples/media:use_h264_decoder_test",
    "//garnet/examples/media:use_media_decoder",
    "//garnet/examples/media:use_vp9_decoder_test",
  ]
}

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

group("vkcube_on_scenic") {
  testonly = true
  public_deps = [
    "//garnet/lib/vulkan:vkcube_on_scenic",
  ]
}

group("vklatency_on_fb") {
  testonly = true
  public_deps = [
    "//garnet/lib/vulkan:vklatency_on_fb",
  ]
}

group("vklatency_on_scenic") {
  testonly = true
  public_deps = [
    "//garnet/lib/vulkan:vklatency_on_scenic",
  ]
}

group("vulkaninfo") {
  testonly = true
  public_deps = [
    "//garnet/lib/vulkan:vulkaninfo",
    "//garnet/packages/prod:vulkan",
  ]
}

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

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

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

group("tcp") {
  testonly = true
  public_deps = [
    "//garnet/examples/tcp/tcp_file_sender",
    "//garnet/packages/prod:network",
  ]
}

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

group("mediasession") {
  testonly = true
  public_deps = [
    "//garnet/examples/mediasession:sine_player",
  ]
}

group("vkcube_on_fb") {
  testonly = true
  public_deps = [
    "//garnet/lib/vulkan:vkcube_on_fb",
  ]
}
