# 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("vm") {
  kernel = true
  sources = [
    "bootalloc.cc",
    "bootreserve.cc",
    "kstack.cc",
    "page.cc",
    "page_queues.cc",
    "page_source.cc",
    "page_state.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 = [
    "//zircon/kernel/lib/boot-options",
    "//zircon/kernel/lib/cmdline",
    "//zircon/kernel/lib/console",
    "//zircon/kernel/lib/counters",
    "//zircon/kernel/lib/fbl",
    "//zircon/kernel/lib/init",
    "//zircon/kernel/lib/ktl",
    "//zircon/kernel/lib/ktrace",
    "//zircon/kernel/lib/user_copy",
    "//zircon/kernel/lib/userabi",
    "//zircon/system/ulib/pretty",

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

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

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

    # <vm/vm_aspace.h> has #include <lib/crypto/prng.h>
    "//zircon/kernel/lib/crypto:headers",

    # "pmm_arena.h" has #include <lib/zx/status.h>.
    "//zircon/system/ulib/zxc: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 = [ "//zircon/kernel/lib/unittest" ]
}
