# 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/cpp/library_headers.gni")

library_headers("headers") {
  headers = [ "lib/simple-audio-stream/simple-audio-stream.h" ]
}

source_set("simple-audio-stream") {
  sources = [ "simple-audio-stream.cc" ]
  public_deps = [
    ":headers",
    "//sdk/fidl/fuchsia.hardware.audio:fuchsia.hardware.audio_cpp",
    "//sdk/lib/fidl",
    "//src/lib/ddktl",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-loop",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/inspect",
    "//zircon/system/ulib/zx",
  ]
  deps = [
    "//src/lib/ddk",
    "//src/media/audio/drivers/lib/audio-driver-proto",
    "//src/media/audio/drivers/lib/audio-proto-utils",
  ]

  # TODO(https://fxbug.dev/42176699): This target uses mutable tables which are deprecated,
  # rather than builders.
  configs += [ "//build/cpp:fidl-wire-deprecated-mutable-tables" ]
}

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