# Copyright 2016 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("//build/package.gni")

executable("bin") {
  output_name = "zircon_benchmarks"
  testonly = true
  sources = [
    "channels.cc",
    "events.cc",
    "fifos.cc",
    "filesystem.cc",
    "handle.cc",
    "lazy_dir.cc",
    "mmu.cc",
    "ports.cc",
    "prng.cc",
    "pseudo_dir.cc",
    "pthreads.cc",
    "random_memcpy.cc",
    "round_trips.cc",
    "sockets.cc",
    "test_runner.cc",
    "threads.cc",
    "util.cc",
    "vmo.cc",
  ]
  deps = [
    ":fidl_interface",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fs",
    "//zircon/public/lib/zx",
  ]
  public_deps = [
    "//zircon/public/lib/perftest",
  ]
  libs = [ "zircon" ]
}

fidl("fidl_interface") {
  testonly = true
  name = "fuchsia.zircon.benchmarks"
  sources = [
    "round_trip_service.fidl",
  ]
}

package("zircon_benchmarks") {
  testonly = true

  deps = [
    ":bin",
  ]

  tests = [
    {
      name = "zircon_benchmarks"
    },
  ]
}
