# Copyright 2019 The Fuchsia Authors
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT

import("//build/zircon/migrated_targets.gni")

zx_library("object") {
  sources = [
    "buffer_chain.cc",
    "bus_transaction_initiator_dispatcher.cc",
    "channel_dispatcher.cc",
    "clock_dispatcher.cc",
    "diagnostics.cc",
    "dispatcher.cc",
    "event_dispatcher.cc",
    "event_pair_dispatcher.cc",
    "exception.cc",
    "exception_dispatcher.cc",
    "exceptionate.cc",
    "executor.cc",
    "fifo_dispatcher.cc",
    "futex_context.cc",
    "guest_dispatcher.cc",
    "handle.cc",
    "handle_table.cc",
    "interrupt_dispatcher.cc",
    "interrupt_event_dispatcher.cc",
    "io_buffer_dispatcher.cc",
    "iommu_dispatcher.cc",
    "job_dispatcher.cc",
    "job_policy.cc",
    "log_dispatcher.cc",
    "mbuf.cc",
    "memory_watchdog.cc",
    "message_packet.cc",
    "msi_dispatcher.cc",
    "msi_interrupt_dispatcher.cc",
    "pager_dispatcher.cc",
    "pager_proxy.cc",
    "pci_device_dispatcher.cc",
    "pci_interrupt_dispatcher.cc",
    "pinned_memory_token_dispatcher.cc",
    "port_dispatcher.cc",
    "process_dispatcher.cc",
    "profile_dispatcher.cc",
    "resource.cc",
    "resource_dispatcher.cc",
    "root_job_observer.cc",
    "singleton.cc",
    "socket_dispatcher.cc",
    "stream_dispatcher.cc",
    "suspend_token_dispatcher.cc",
    "thread_dispatcher.cc",
    "timer_dispatcher.cc",
    "user_handles.cc",
    "vcpu_dispatcher.cc",
    "virtual_interrupt_dispatcher.cc",
    "vm_address_region_dispatcher.cc",
    "vm_object_dispatcher.cc",
    "wait_signal_observer.cc",
  ]
  deps = [
    ":tests",
    "//sdk/lib/fit",
    "//sdk/lib/iob",
    "//zircon/kernel/dev/interrupt",
    "//zircon/kernel/dev/iommu/dummy",
    "//zircon/kernel/dev/pcie",
    "//zircon/kernel/hypervisor",
    "//zircon/kernel/lib/arch",
    "//zircon/kernel/lib/boot-options",
    "//zircon/kernel/lib/console",
    "//zircon/kernel/lib/counters",
    "//zircon/kernel/lib/crashlog",
    "//zircon/kernel/lib/fbl",
    "//zircon/kernel/lib/init",
    "//zircon/kernel/lib/kconcurrent",
    "//zircon/kernel/lib/ktl",
    "//zircon/kernel/lib/ktrace",
    "//zircon/kernel/lib/object_cache",
    "//zircon/kernel/lib/page_cache",
    "//zircon/kernel/lib/root_resource_filter",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/region-alloc",
    "//zircon/system/ulib/zx",
  ]
  if (current_cpu == "x64") {
    deps += [ "//zircon/kernel/dev/iommu/intel" ]
  }
  public_deps = [
    # <object/buffer_chain.h> has #include <ktl/move.h>.
    "//zircon/kernel/lib/ktl:headers",

    # <object/port_dispatcher.h> has <lib/object_cache.h>
    "//zircon/kernel/lib/object_cache:headers",

    # <object/buffer_chain.h> has <lib/page_cache.h>
    "//zircon/kernel/lib/page_cache:headers",

    # <object/pci_device_dispatcher.h> has #include <dev/pci_common.h>
    "//zircon/kernel/dev/pcie:headers",

    # <object/log_dispatcher.h> has #include <lib/debuglog.h>.
    "//zircon/kernel/lib/debuglog:headers",

    # <object/clock_dispatcher.h> includes things from kconcurrent
    "//zircon/kernel/lib/kconcurrent:headers",

    # <object/resource_dispatcher.h> has #include <region-alloc/region-alloc.h>.
    "//zircon/system/ulib/region-alloc:headers",

    # <object/process_dispatcher.h> has #include <vm/vm_aspace.h>.
    "//zircon/kernel/vm:headers",

    # <object/clock_dispatcher.h> has #include <lib/affine/transform.h>.
    "//zircon/system/ulib/affine",
  ]
}

source_set("tests") {
  # TODO: testonly = true
  sources = [
    "test/buffer_chain_tests.cc",
    "test/exceptionate_tests.cc",
    "test/handle_tests.cc",
    "test/interrupt_event_dispatcher_tests.cc",
    "test/io_buffer_dispatcher_tests.cc",
    "test/job_dispatcher_tests.cc",
    "test/job_policy_tests.cc",
    "test/mbuf_tests.cc",
    "test/message_packet_tests.cc",
    "test/msi_object_tests.cc",
    "test/root_job_observer_tests.cc",
    "test/shareable_process_state_tests.cc",
    "test/socket_dispatcher_tests.cc",
    "test/state_tracker_tests.cc",
  ]
  deps = [
    ":headers",
    "//zircon/kernel/lib/boot-options",
    "//zircon/kernel/lib/console",
    "//zircon/kernel/lib/ktl",
    "//zircon/kernel/lib/unittest",
  ]
}
