# 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("//build/fidl/fidl.gni")
import("//topaz/runtime/dart_runner/dart_app.gni")

dart_app("dart_fidl_benchmarks") {
  meta = [
    {
      path = rebase_path("meta/dart_fidl_benchmarks.cmx")
      dest = "dart_fidl_benchmarks.cmx"
    },
  ]

  main_dart = "lib/main.dart"

  sources = [
    "benchmark.dart",
    "main.dart",
    "string.dart",
  ]

  deps = [
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/fuchsia",
    ":benchmark_fidl",
  ]
}

fidl("benchmark_fidl") {
  name = "fidl.test.dart.benchmark"

  sources = [
    "fidl/benchmark.test.fidl"
  ]
}
