# 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/config.gni")
import("//build/package.gni")
import("//build/package/component.gni")

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

  binaries = [
    {
      name = "kernel_crash_checker"
    },
  ]

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

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

  sources = [
    "main.cc",
  ]

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

config_data("config") {
  for_pkg = "sysmgr"
  sources = [
    "config/config.json",
  ]
  outputs = [
    "kernel_crash_checker.config",
  ]
}
