# Copyright 2020 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.

visibility = [ "//src/developer/forensics/exceptions/*" ]

###############################################################################
# SOURCES
###############################################################################
source_set("lib") {
  sources = [
    "component_lookup.cc",
    "component_lookup.h",
    "crash_reporter.cc",
    "crash_reporter.h",
    "minidump.cc",
    "minidump.h",
    "report_builder.cc",
    "report_builder.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.exception",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/fidl/fuchsia.sys.internal",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/exceptions/fidl:fuchsia.exception.internal",
    "//src/developer/forensics/utils/fidl:oneshot_ptr",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//third_party/crashpad/minidump",
    "//third_party/crashpad/snapshot",
    "//third_party/crashpad/third_party/mini_chromium/mini_chromium/base",
    "//third_party/crashpad/util",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
  ]

  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils/fit",
    "//src/lib/fsl",
  ]
}

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

  deps = [
    ":lib",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/exceptions:constants",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]

  visibility += [ "//src/developer/forensics:*" ]
}
