# Copyright 2018 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/images/crashpad.gni")
import("//build/package.gni")

executable("bin") {
  output_name = "kernel_crash_checker"

  sources = [
    "main.cc",
  ]

  deps = [
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/syslog/cpp",
    "//zircon/public/fidl/fuchsia-crash",
    "//zircon/public/fidl/fuchsia-net",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/zx",
  ]

  if (enable_crashpad) {
    defines = [ "USE_CRASHPAD=1" ]
  }
}

package("kernel_crash_checker") {
  deps = [
    ":bin",
  ]

  binary = "kernel_crash_checker"

  meta = [
    {
      path = rebase_path("meta/kernel_crash_checker.cmx")
      dest = "kernel_crash_checker.cmx"
    },
  ]
}

package("config") {
  deprecated_system_image = true
  package_name = "kernel_crash_checker_config"
  resources = [
    {
      dest = "sysmgr/kernel_crash_checker.config"
      path = rebase_path("kernel_crash_checker.config")
    },
  ]
}
