# Copyright 2020 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/test/test_package.gni")
import("//src/tests/benchmarks/fidl/benchmark_suite/benchmark_suite.gni")
import("//tools/fidl/gidl/gidl.gni")

gidl_reference_benchmarks("benchmark_suite_reference") {
  testonly = true
  inputs = [
    "//src/tests/benchmarks/fidl/benchmark_suite/byte_vector.gen.gidl",
    "//src/tests/benchmarks/fidl/benchmark_suite/padded_struct_tree.gen.gidl",
    "//src/tests/benchmarks/fidl/benchmark_suite/struct_tree.gen.gidl",
    "//src/tests/benchmarks/fidl/benchmark_suite/table_all_set.gen.gidl",
    "//src/tests/benchmarks/fidl/benchmark_suite/table_all_unset.gen.gidl",
    "//src/tests/benchmarks/fidl/benchmark_suite/table_single_set.gen.gidl",
  ]
  fidl = benchmark_suite_fidl_target
  deps = [
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl",
  ]
}

executable("bin") {
  output_name = "reference_fidl_microbenchmarks"
  testonly = true
  sources = [
    "byte_vector.cc",
    "main.cc",
    "padded_struct_tree.cc",
    "struct_tree.cc",
    "uint8_table.cc",
  ]
  deps = [
    ":benchmark_suite_reference",
    "//src/zircon/lib/zircon",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl",
    "//zircon/public/lib/sync",
    "//zircon/system/ulib/perftest",
  ]
}

package("reference") {
  testonly = true

  deps = [ ":bin" ]

  binaries = [
    {
      name = "reference_fidl_microbenchmarks"
      shell = true
    },
  ]
}
