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

import("gn/build_rules.gni")

#
#
#
group("compute") {
  deps = [
    "common",
    "common/vk",
    "forma",
    "rive-rs",
    "spinel-vk-rs",
    "spinel/platforms/vk",
    "surpass",
    "svg",
  ]
}

#
# These tests require a Vulkan environment
#
group("vulkan-tests") {
  testonly = true
  public_deps = [
    "radix_sort/platforms/vk/tests/radix_sort_vk_bench/tests",
    "spinel-vk-rs:tests",
    "spinel/platforms/vk/tests/spinel_vk_tests",
    "tools/bench/platforms/vk/tests",
  ]
}

#
#
#
group("tests") {
  testonly = true
  public_deps = [
    "common:common_unittests",
    "forma:forma-tests",
    "rive-rs:rive-rs-tests",
    "surpass:surpass-tests",
    "svg:svg_unittests",
  ]

  public_deps += [ ":vulkan-tests" ]
}

#
# Support for `ffx component explore /core/compute-benchmarks`
#

fuchsia_component("compute-benchmarks-cmp") {
  manifest = "meta/compute-benchmarks.cml"
  component_name = "compute-benchmarks"
}

fuchsia_package("compute-benchmarks") {
  deps = [
    ":compute-benchmarks-cmp",
    "radix_sort/platforms/vk/tests/radix_sort_vk_bench",
    "spinel/platforms/vk/tests/spinel_vk_bench",
    "tools/bench/platforms/vk:bench-vk",
  ]
}
