# 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

# TODO(fxbug.dev/54160) Keep in sync with BUILD.gn

zx_library("vm") {
  kernel = true
  sources = [
    "bootalloc.cc",
    "bootreserve.cc",
    "kstack.cc",
    "page.cc",
    "page_queues.cc",
    "page_source.cc",
    "physmap.cc",
    "pinned_vm_object.cc",
    "pmm.cc",
    "pmm_arena.cc",
    "pmm_checker.cc",
    "pmm_node.cc",
    "scanner.cc",
    "vm.cc",
    "vm_address_region.cc",
    "vm_address_region_or_mapping.cc",
    "vm_aspace.cc",
    "vm_cow_pages.cc",
    "vm_mapping.cc",
    "vm_object.cc",
    "vm_object_paged.cc",
    "vm_object_physical.cc",
    "vm_page_list.cc",
    "vmm.cc",
  ]
  deps = [
    "$zx/kernel/lib/cmdline",
    "$zx/kernel/lib/console",
    "$zx/kernel/lib/counters",
    "$zx/kernel/lib/fbl",
    "$zx/kernel/lib/init",
    "$zx/kernel/lib/ktl",
    "$zx/kernel/lib/ktrace",
    "$zx/kernel/lib/user_copy",
    "$zx/kernel/lib/userabi",
    "$zx/system/ulib/pretty",

    # TODO: testonly
    ":tests",
  ]
  public_deps = [
    # <vm/vm_page_list.h> has #include <ktl/unique_ptr.h>.
    "$zx/kernel/lib/ktl:headers",

    # <vm/vm_object.h> has #include <fbl/name.h>.
    "$zx/kernel/lib/fbl:headers",

    # <vm/vm_object.h> has #include <lib/user_copy/user_ptr.h>.
    "$zx/kernel/lib/user_copy:headers",

    # <vm/vm_aspace.h> has #include <lib/crypto/prng.h>
    "$zx/kernel/lib/crypto:headers",
  ]
}

source_set("tests") {
  sources = [
    "unittests/aspace_unittest.cc",
    "unittests/pmm_unittest.cc",
    "unittests/test_helper.cc",
    "unittests/vmo_unittest.cc",
    "unittests/vmpl_unittest.cc",
  ]
  deps = [ "$zx/kernel/lib/unittest" ]
}
