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

###############################################################################
# SOURCES
###############################################################################
source_set("attachments") {
  sources = [
    "attachment_manager.cc",
    "attachment_manager.h",
    "metrics.cc",
    "metrics.h",
    "provider.h",
    "static_attachments.cc",
    "static_attachments.h",
    "types.h",
  ]

  public_deps = [
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback:redactor_factory",
    "//src/developer/forensics/feedback_data:inspect_budget",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils/cobalt",
    "//src/developer/forensics/utils/redact",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/zx",
  ]

  deps = [
    "//src/developer/forensics/feedback_data:constants",
    "//src/lib/files",
    "//src/lib/fxl",
  ]
}

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

  public_deps = [
    ":attachments",
    "//sdk/fidl/fuchsia.diagnostics",
    "//sdk/lib/fit",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/inspect/cpp",
    "//src/lib/backoff",
    "//src/lib/fxl",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/zx",
  ]

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

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

  public_deps = [
    ":attachments",
    "//sdk/fidl/fuchsia.boot",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/utils/redact",
    "//src/lib/backoff",
    "//src/lib/fxl",
    "//zircon/system/ulib/zx",
  ]

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

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

  public_deps = [
    ":attachments",
    "//sdk/lib/fit",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/feedback_data:log_source",
    "//src/developer/forensics/utils:storage_size",
    "//src/developer/forensics/utils/redact",
    "//src/lib/fxl",
    "//src/lib/timekeeper",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/zx",
  ]

  deps = [
    "//sdk/fidl/fuchsia.logger",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback_data:constants",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils:logs",
    "//src/lib/backoff",
    "//src/lib/diagnostics/accessor2logger",
  ]
}
