# 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("//src/devices/bus/drivers/pci/pci.gni")
import("//zircon/system/ulib/acpica/acpica.gni")

config("acpica-config") {
  include_dirs = [ "include" ]

  # TODO(https://fxbug.dev/42084914): UBSan is detecting a cast to a pointer type from
  # a misaligned object. This is UB in C. We can temporarily disable this check
  # to unblock the clang roll, but we should come back and fix them.
  cflags_c = [ "-fno-sanitize=alignment" ]
}

if (is_fuchsia) {
  source_set("acpica-fuchsia") {
    deps = [
      "//src/devices/pci/lib/pci",
      "//src/lib/ddk",
      "//third_party/acpica:headers",
      "//zircon/system/ulib/bitmap",
      "//zircon/system/ulib/fbl",
      "//zircon/system/ulib/zircon-internal",
    ]

    public_configs = [ ":acpica-config" ]

    sources = [
      "ioport.cc",
      "irq.cc",
      "mmio.cc",
      "mutex.cc",
      "osfuchsia.cc",
      "pci.cc",
      "semaphore.cc",
      "task.cc",
    ]

    defines = [ "_ALL_SOURCE" ]

    if (platform_enable_user_pci) {
      defines += [ "ENABLE_USER_PCI" ]
    }

    if (acpica_debug_output) {
      defines += [ "ACPI_DEBUG_OUTPUT" ]
    }
  }
} else {
  group("acpica-fuchsia") {
  }
}
