# 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.

##########################################
# Though under //zircon, this build file #
# is meant to be used in the Fuchsia GN  #
# build.                                 #
# See fxbug.dev/36548.                   #
##########################################

assert(!defined(zx) || zx != "/",
       "This file can only be used in the Fuchsia GN build.")

import("//build/unification/zx_library.gni")

group("tests") {
  testonly = true
  deps = [ "tests" ]
}

zx_library("rtc") {
  sdk = "source"
  sdk_headers = [ "librtc.h" ]
  sources = [ "librtc.c" ]
  deps = [
    "//sdk/fidl/fuchsia.hardware.rtc:fuchsia.hardware.rtc_c",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
  ]
}

zx_library("rtc_llcpp") {
  sdk = "source"
  sdk_headers = [ "librtc_llcpp.h" ]
  sources = [ "librtc_llcpp.cc" ]
  deps = [ "//sdk/fidl/fuchsia.hardware.rtc:fuchsia.hardware.rtc_llcpp" ]
}
