# Copyright 2021 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/components.gni")
import("//build/fidl/fidl.gni")
import("//build/rust/rustc_library.gni")

fidl("fidl") {
  name = "fuchsia.testing.deadline"
  sources = [ "deadline.fidl" ]
  enable_hlcpp = true
}

rustc_library("named-timer") {
  name = "named_timer"
  with_unit_tests = true

  edition = "2021"

  deps = [
    ":fidl_rust",
    "//src/lib/fuchsia-async",
    "//src/lib/zircon/rust:fuchsia-zircon",
  ]

  test_deps = [ "//third_party/rust_crates:futures" ]

  sources = [ "src/lib.rs" ]

  non_rust_deps = [ ":named_timer_noop_lib" ]
}

source_set("named-timer-headers") {
  sources = [ "named_timer.h" ]
}

shared_library("named_timer_noop_lib") {
  sources = [ "noop_timer.cc" ]
  deps = [ ":named-timer-headers" ]
}

fuchsia_unittest_package("named-timer-test") {
  deps = [ ":named-timer_test" ]
}

group("tests") {
  testonly = true
  deps = [ ":named-timer-test" ]
}
