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

benchmark_suite_declarations = [
  {
    name = "bool_array"
    gidl = [ "bool_array.gen.gidl" ]
    fidl = [ "bool_array.gen.test.fidl" ]
  },
  {
    name = "byte_array"
    gidl = [ "byte_array.gen.gidl" ]
    fidl = [ "byte_array.gen.test.fidl" ]
  },
  {
    name = "byte_vector"
    gidl = [ "byte_vector.gen.gidl" ]
    fidl = [ "byte_vector.test.fidl" ]
  },
  {
    name = "byte_vector_limit"
    gidl = [ "byte_vector_limit.gen.gidl" ]
    fidl = [ "byte_vector_limit.gen.test.fidl" ]
  },
  {
    name = "enum_array"
    gidl = [ "enum_array.gen.gidl" ]
    fidl = [ "enum_array.gen.test.fidl" ]
  },
  {
    name = "enum_array_non_dense"
    gidl = [ "enum_array_non_dense.gen.gidl" ]
    fidl = [ "enum_array_non_dense.gen.test.fidl" ]
  },
  {
    name = "float_array"
    gidl = [ "float_array.gen.gidl" ]
    fidl = [ "float_array.gen.test.fidl" ]
  },
  {
    name = "gpu_magma"
    gidl = [ "gpu_magma.gen.gidl" ]
    fidl = [ "gpu_magma.test.fidl" ]
  },
  {
    name = "handle_array_event"
    gidl = [ "handle_array_event.gen.gidl" ]
    fidl = [
      "handle_array_event.gen.test.fidl",
      "handle_array_event_protocol.test.fidl",
    ]
  },
  {
    name = "handle_array_plain"
    gidl = [ "handle_array_plain.gen.gidl" ]
    fidl = [ "handle_array_plain.gen.test.fidl" ]
  },
  {
    name = "hardware_display"
    gidl = [ "hardware_display.gen.gidl" ]
    fidl = [ "hardware_display.test.fidl" ]
  },
  {
    name = "inline"
    gidl = [ "inline.gidl" ]
    fidl = [ "inline.test.fidl" ]
  },
  {
    name = "int32_array"
    gidl = [ "int32_array.gen.gidl" ]
    fidl = [ "int32_array.gen.test.fidl" ]
  },
  {
    name = "int32_vector"
    gidl = [ "int32_vector.gen.gidl" ]
    fidl = [ "int32_vector.test.fidl" ]
  },
  {
    name = "media"
    gidl = [ "media.gidl" ]
    fidl = [ "media.test.fidl" ]
  },
  {
    name = "optional_struct_tree"
    gidl = [ "optional_struct_tree.gen.gidl" ]
    fidl = [ "optional_struct_tree.test.fidl" ]
  },
  {
    name = "padded_struct_tree"
    gidl = [ "padded_struct_tree.gen.gidl" ]
    fidl = [ "padded_struct_tree.gen.test.fidl" ]
  },
  {
    name = "result"
    gidl = [ "result.gidl" ]
    fidl = [ "result.test.fidl" ]
  },
  {
    name = "socket"
    gidl = [ "socket.gidl" ]
    fidl = [ "socket.test.fidl" ]
  },
  {
    name = "string"
    gidl = [ "string.gidl" ]
    fidl = [ "string.test.fidl" ]
  },
  {
    name = "struct_array"
    gidl = [ "struct_array.gen.gidl" ]
    fidl = [ "struct_array.gen.test.fidl" ]
  },
  {
    name = "struct_field"
    gidl = [ "struct_field.gen.gidl" ]
    fidl = [ "struct_field.gen.test.fidl" ]
  },
  {
    name = "struct_tree"
    gidl = [ "struct_tree.gen.gidl" ]
    fidl = [ "struct_tree.gen.test.fidl" ]
  },
  {
    name = "struct_vector"
    gidl = [ "struct_vector.gen.gidl" ]
    fidl = [ "struct_vector.test.fidl" ]
  },
  {
    name = "table_all_set"
    gidl = [ "table_all_set.gen.gidl" ]
    fidl = [ "table.gen.test.fidl" ]
  },
  {
    name = "table_all_unset"
    gidl = [ "table_all_unset.gen.gidl" ]
    fidl = [ "table.gen.test.fidl" ]
  },
  {
    name = "table_signle_set_gen"
    gidl = [ "table_single_set.gen.gidl" ]
    fidl = [ "table.gen.test.fidl" ]
  },
  {
    name = "table_reserved_last_set"
    gidl = [ "table_reserved_last_set.gen.gidl" ]
    fidl = [ "table_reserved.gen.test.fidl" ]
  },
  {
    name = "union"
    gidl = [ "union.gen.gidl" ]
    fidl = [ "union.gen.test.fidl" ]
  },
]

benchmark_suite_gidl_files = []
benchmark_suite_fidl_files = []
benchmark_suites = []

benchmark_suite_gidl_dir = "//src/tests/benchmarks/fidl/benchmark_suite/"

foreach(decl, benchmark_suite_declarations) {
  gidl_files = []
  gidl_files = rebase_path(decl.gidl, "", benchmark_suite_gidl_dir)
  benchmark_suite_gidl_files += gidl_files
  benchmark_suite_gidl_files -= gidl_files
  benchmark_suite_gidl_files += gidl_files

  benchmark_suite_fidl_files += decl.fidl
  benchmark_suite_fidl_files -= decl.fidl
  benchmark_suite_fidl_files += decl.fidl

  benchmark_suites += [
    {
      name = decl.name
      gidl = gidl_files
      fidl = decl.fidl
      parts = []
      parts = string_split(get_path_info(fidl[0], "name"), ".")
      fidl_library_suffix = string_replace(parts[0], "_", "")
      fidl_target =
          "//src/tests/benchmarks/fidl/benchmark_suite:benchmark_suite_fidl_" +
          fidl_library_suffix
    },
  ]
}

benchmark_suite_fidl_target =
    "//src/tests/benchmarks/fidl/benchmark_suite:benchmark_suite_fidl"
