# 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",
    "lazy_dir.cc",
    "mmu.cc",
    "ports.cc",
    "pseudo_dir.cc",
    "pthreads.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"
    },
  ]
}
