# 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",
    "evictor.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",
  ]

  # GCC figures out some cases where we have a global variable that's used as a
  # RefPtr and so appears like it might be passed to delete.  We always leak
  # the reference so it will never actually be called, but the compiler can't
  # figure that out statically so we must disable its warning.
  configs += [ ":suppress-nonheap-warning" ]
}

config("suppress-nonheap-warning") {
  visibility = [ ":*" ]
  if (is_gcc) {
    cflags = [ "-Wno-free-nonheap-object" ]
  }
}

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