# 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_images.gni")
import("//build/images/manifest.gni")
import("//build/package.gni")

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

  sources = [
    "benchmarks.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",
  ]
}

package("garnet_benchmarks") {
  testonly = true

  deps = [
    ":garnet_benchmarks_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"
    },
  ]
}
