# 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")
import("//build/testing/environments.gni")

executable("bin") {
  output_name = "zircon_benchmarks"
  testonly = true
  sources = [
    "channels.cc",
    "events.cc",
    "expose.cc",
    "fdio_spawn.cc",
    "fifos.cc",
    "filesystem.cc",
    "handle.cc",
    "inspect.cc",
    "lazy_dir.cc",
    "mem_alloc.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/inspect",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fs",
    "//zircon/public/lib/inspect-vmo",
    "//zircon/public/lib/zx",
  ]
  public_deps = [
    "//zircon/public/lib/perftest",
  ]
  libs = [ "zircon" ]
}

# "Helper" executable used to implement the fdio_spawn benchmark.
executable("fdio_spawn_helper") {
  output_name = "fdio_spawn_helper"
  testonly = true
  sources = [
    "fdio_spawn_helper.cc",
  ]
  deps = []
  public_deps = []
}

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

package("zircon_benchmarks") {
  testonly = true

  deps = [
    ":bin",
    ":fdio_spawn_helper",
  ]

  tests = [
    {
      name = "zircon_benchmarks"
      environments = basic_envs
    },
    {
      name = "fdio_spawn_helper"
      environments = basic_envs
    },
  ]
}
