# 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

source_set("kernel") {
  sources = [
    "brwlock.cc",
    "cpu_distance_map.cc",
    "cpu_search_set.cc",
    "deadline.cc",
    "debug.cc",
    "dpc.cc",
    "event.cc",
    "init.cc",
    "mp.cc",
    "mutex.cc",
    "owned_wait_queue.cc",
    "percpu.cc",
    "scheduler.cc",
    "semaphore.cc",
    "task_runtime_stats.cc",
    "thread.cc",
    "timer.cc",
    "wait.cc",
  ]

  deps = [
    ":tests",
    "//sdk/lib/fit",
    "//zircon/kernel/dev/interrupt",
    "//zircon/kernel/dev/pdev/hw_watchdog",
    "//zircon/kernel/lib/abi_type_validator",
    "//zircon/kernel/lib/arch",
    "//zircon/kernel/lib/console",
    "//zircon/kernel/lib/counters",
    "//zircon/kernel/lib/fbl",
    "//zircon/kernel/lib/heap",
    "//zircon/kernel/lib/init",
    "//zircon/kernel/lib/jtrace",
    "//zircon/kernel/lib/ktl",
    "//zircon/kernel/lib/ktrace",
    "//zircon/kernel/lib/libc",
    "//zircon/kernel/lib/topology",
    "//zircon/kernel/lib/version",
    "//zircon/kernel/object",
    "//zircon/kernel/vm",
    "//zircon/system/ulib/affine",
    "//zircon/system/ulib/explicit-memory",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/zircon-internal",
    "//zircon/system/ulib/zxc",
  ]

  # TODO(fxbug.dev/27083): This dependency is conditional because when built
  # with GCC the kernel uses function scoped statics requiring dynamic
  # initialization. Once fxbug.dev/27083 is fixed, this dependency can be made
  # unconditional.
  if (!is_gcc) {
    deps += [ "//zircon/kernel/lib/cxxabi-dynamic-init" ]
  }
}

source_set("tests") {
  # TODO: testonly = true
  sources = [
    "mutex_tests.cc",
    "semaphore_tests.cc",
    "spinlock_tests.cc",
    "thread_test.cc",
  ]
  deps = [
    "//zircon/kernel/lib/console",
    "//zircon/kernel/lib/unittest",
  ]
}
