# 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/*" ]

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

  deps = [
    ":src",
    "encoding:production",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback:redactor_factory",
    "//src/developer/forensics/feedback_data:constants",
    "//src/developer/forensics/utils/redact",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace-provider",
  ]

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

source_set("src") {
  public = [
    "controller.h",
    "system_log_recorder.h",
  ]

  sources = [
    "controller.cc",
    "controller.h",
    "log_message_store.cc",
    "log_message_store.h",
    "system_log_recorder.cc",
    "system_log_recorder.h",
    "writer.cc",
    "writer.h",
  ]

  public_deps = [
    "encoding:encoder",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/fidl/fuchsia.process.lifecycle",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/feedback_data:log_source",
    "//src/developer/forensics/utils:logs",
    "//src/developer/forensics/utils:storage_size",
    "//src/developer/forensics/utils/redact",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
  ]

  deps = [
    "//sdk/fidl/fuchsia.diagnostics",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback_data:constants",
    "//src/lib/diagnostics/accessor2logger",
    "//src/lib/files",
    "//src/lib/fxl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/trace",
  ]
}

# This file is not needed in system_log_recorder per se, but should be kept in sync
# with the writer.
source_set("reader") {
  sources = [
    "reader.cc",
    "reader.h",
  ]

  public_deps = [ "encoding:decoder" ]

  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback_data:constants",
    "//src/lib/files",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//third_party/re2",
    "//zircon/system/ulib/trace",
  ]
}
