# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/assembly/bootfs_files_for_assembly.gni")

bootfs_files_for_assembly("bootfs") {
  deps = [
    ":handles",
    ":kill",
    ":killall",
    ":kstats",
    ":memgraph",
    ":ps",
    ":signal",
    ":threads",
    ":top",
    ":vmaps",
    ":vmos",
  ]
}

source_set("ps_internal") {
  sources = [ "ps_internal.c" ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/task-utils",
  ]
}

source_set("handles_internal") {
  sources = [
    "handles-internal.cc",
    "object-utils.cc",
  ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/task-utils",
  ]
}

executable("ps") {
  visibility = [
    ":*",
    "//build/images/zedboot:*",
  ]
  output_dir = "$root_out_dir/zircon-migrated"
  sources = [ "ps.c" ]
  deps = [
    ":ps_internal",
    "//sdk/lib/fdio",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/task-utils",
  ]
}

executable("top") {
  visibility = [ ":*" ]
  sources = [ "top.c" ]
  deps = [
    "//sdk/lib/fdio",
    "//src/lib/listnode",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/task-utils",
  ]
}

executable("kill") {
  visibility = [ ":*" ]
  sources = [ "kill.c" ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/task-utils",
  ]
}

executable("killall") {
  visibility = [
    ":*",
    "//build/images/zedboot:*",
  ]
  sources = [ "killall.c" ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/task-utils",
  ]
}

executable("vmaps") {
  visibility = [ ":*" ]
  sources = [ "vmaps.c" ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/task-utils",
  ]
}

executable("vmos") {
  visibility = [ ":*" ]
  sources = [
    "vmo-utils.c",
    "vmos.cc",
  ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/task-utils",
  ]
}

source_set("resources") {
  sources = [
    "resources.cc",
    "resources.h",
  ]

  deps = [
    "//sdk/fidl/fuchsia.kernel:fuchsia.kernel_cpp",
    "//sdk/lib/component/incoming/cpp",
    "//sdk/lib/fdio",
  ]
}

executable("memgraph") {
  visibility = [ ":*" ]
  sources = [
    "memgraph.cc",
    "object-utils.cc",
    "vmo-utils.c",
  ]
  include_dirs = [ target_gen_dir ]
  deps = [
    ":gen-memgraph-schema",
    ":resources",
    "//sdk/lib/fdio",
    "//zircon/system/ulib/task-utils",
  ]
}

# Generate an include file that contains the schema JSON.
action("gen-memgraph-schema") {
  outputs = [ "$target_gen_dir/memgraph-schema.h" ]
  sources = [ "memgraph-schema.json" ]
  script = "gen-memgraph-schema-header.sh"
  args = rebase_path(outputs, root_build_dir) +
         rebase_path(sources, root_build_dir)
}

executable("kstats") {
  visibility = [ ":*" ]
  sources = [ "kstats.c" ]
  deps = [
    ":resources",
    "//sdk/lib/fdio",
    "//zircon/system/ulib/pretty",
  ]
}

executable("threads") {
  visibility = [
    ":*",
    "//build/images/zedboot:*",
  ]
  sources = [ "threads.cc" ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/inspector",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/task-utils",
    "//zircon/system/ulib/zx",
  ]

  # TODO(https://fxbug.dev/42085293): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-vla-cxx-extension" ]
}

executable("signal") {
  visibility = [ ":*" ]
  sources = [ "signal.c" ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/task-utils",
  ]
}

executable("handles") {
  visibility = [ ":*" ]
  output_dir = "$root_out_dir/zircon-migrated"
  sources = [ "handles.cc" ]
  deps = [
    ":handles_internal",
    "//sdk/lib/fdio",
    "//zircon/system/ulib/task-utils",
  ]
}
