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

executable("biotime") {
  configs += [ "//build/unification/config:zircon-migrated" ]

  testonly = true
  sources = [ "biotime.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_c",
    "//sdk/lib/fdio",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/system/ulib/fdio-caller",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/perftest",
  ]
}

test("biotime-test") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "biotime-test.cc" ]
  output_name = "biotime-test"
  deps = [
    "//sdk/lib/fdio",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/ramdevice-client",
  ]
}

bootfs_test("biotime-test-bootfs-test") {
  name = "biotime-test"
  deps = [ ":biotime-test" ]
}
