# 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/unification/zx_library.gni")

zx_library("intel-hda") {
  sdk = "source"
  sdk_headers = [
    "intel-hda/utils/status_or.h",
    "intel-hda/utils/codec-commands.h",
    "intel-hda/utils/codec-caps.h",
    "intel-hda/utils/utils.h",
    "intel-hda/utils/intel-hda-proto.h",
    "intel-hda/utils/status.h",
    "intel-hda/utils/intel-audio-dsp-ipc.h",
    "intel-hda/utils/nhlt.h",
    "intel-hda/utils/codec-state.h",
    "intel-hda/utils/intel-hda-registers.h",
    "intel-hda/codec-utils/stream-base.h",
    "intel-hda/codec-utils/codec-driver-base.h",
  ]
  sources = [
    "codec-utils/codec-driver-base.cc",
    "codec-utils/stream-base.cc",
    "utils/codec-caps.cc",
    "utils/status.cc",
    "utils/utils.cc",
  ]
  public_deps = [
    # <intel-hda/codec-utils/stream-base.h> has #include <fuchsia/hardware/intelhda/codec/c/banjo.h>.
    "//sdk/banjo/fuchsia.hardware.intelhda.codec",
    "//sdk/fidl/fuchsia.hardware.audio:fuchsia.hardware.audio_llcpp",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/abs_clock",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/audio-driver-proto",
    "//zircon/system/ulib/edid",
  ]
  deps = [
    "//sdk/fidl/fuchsia.hardware.audio:fuchsia.hardware.audio_llcpp",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/abs_clock",
    "//zircon/system/ulib/audio-driver-proto",
    "//zircon/system/ulib/audio-proto-utils",
    "//zircon/system/ulib/mmio-ptr",
  ]

  # TODO(fxbug.dev/69585): This target uses raw zx::channel with LLCPP which is deprecated.
  # Please migrate to typed channel APIs (fidl::ClientEnd<T>, fidl::ServerEnd<T>).
  # See linked bug for details.
  configs += [ "//build/cpp:fidl-llcpp-deprecated-raw-channels" ]
}

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