# Copyright 2018 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("//build/config/fuchsia/zircon.gni")
import("//build/images/manifest.gni")
import("//build/package.gni")

executable("garnet_benchmarks_bin") {
  output_name = "garnet_benchmarks"

  sources = [
    "benchmarks.cc",
    "gfx_benchmarks.cc",
    "gfx_benchmarks.h",
  ]

  deps = [
    "//garnet/testing/benchmarking:benchmarking",
    "//garnet/testing/benchmarking:is_vulkan_supported",
  ]
}

executable("garnet_benchmarks_perfcompare_bin") {
  output_name = "garnet_benchmarks_perfcompare"

  sources = [
    "benchmarks_perfcompare.cc",
  ]

  deps = [
    "//garnet/testing/benchmarking:benchmarking",
  ]
}

zircon_extras_manifest("zircon-test-manifest") {
  visibility = [ ":*" ]
  manifest = "tests"
  patterns = [
    "test/fs/fs-bench-test",
    "test/sys/blobfs-bench-test",
    "test/sys/perf-test",
  ]
}

package("garnet_benchmarks") {
  testonly = true

  deps = [
    ":garnet_benchmarks_bin",
    ":garnet_benchmarks_perfcompare_bin",
    ":zircon-test-manifest",
  ]

  extra = get_target_outputs(":zircon-test-manifest")

  binaries = [
    {
      name = rebase_path("benchmarks.sh")
      dest = "benchmarks.sh"
    },
    {
      shell = true
      name = "garnet_benchmarks"
    },
    {
      name = rebase_path("benchmarks_perfcompare.sh")
      dest = "benchmarks_perfcompare.sh"
    },
    {
      shell = true
      name = "garnet_benchmarks_perfcompare"
    },
  ]
}
