# 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/audio-driver-proto",
    "//zircon/system/ulib/dispatcher-pool",
    "//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/dispatcher-pool",
    "//zircon/system/ulib/mmio-ptr",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

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