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

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

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

  public_deps = [
    "//sdk/fidl/fuchsia.mem:fuchsia.mem_hlcpp",
    "//src/lib/fsl",
  ]

  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/lib/files",
    "//src/lib/fxl",
    "//third_party/zlib:minizip",
  ]
}

source_set("errors") {
  sources = [ "errors.h" ]

  public_deps = [
    "//sdk/lib/syslog/cpp",
    "//sdk/lib/utf-utils:utf-utils",
  ]
}

source_set("fidl_event_handler") {
  sources = [ "fidl_event_handler.h" ]

  public_deps = [
    "//sdk/lib/fidl/cpp/wire",
    "//sdk/lib/syslog/cpp",
  ]
}

source_set("fidl_oneshot") {
  sources = [ "fidl_oneshot.h" ]

  public_deps = [
    ":errors",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/fit",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/async:async-cpp",
  ]
}

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

  public_deps = [
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl",
    "//zircon/system/ulib/inspect",
  ]
}

source_set("instrumented_binding_set") {
  sources = [ "instrumented_binding_set.h" ]

  public_deps = [
    "//sdk/lib/fidl/cpp",
    "//src/developer/forensics/utils:inspect_node_manager",
    "//zircon/system/ulib/inspect",
  ]
}

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

  public_deps = [ "//sdk/fidl/fuchsia.logger:fuchsia.logger_hlcpp" ]

  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl",
    "//zircon/system/ulib/zx",
  ]
}

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

  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/lib/files",
  ]
}

source_set("promise_timeout") {
  sources = [ "promise_timeout.h" ]

  public_deps = [
    ":errors",
    "//sdk/lib/fit-promise",
    "//zircon/system/ulib/async:async-cpp",
  ]
}

source_set("regexp") {
  sources = [ "regexp.h" ]
  public_deps = [ "//third_party/re2" ]
}

source_set("sized_data") {
  sources = [ "sized_data.h" ]
}

source_set("storage_size") {
  sources = [ "storage_size.h" ]
  public_deps = [ "//sdk/lib/syslog/cpp" ]
}

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

  public_deps = [
    "//sdk/lib/syslog/cpp",
    "//src/lib/timekeeper",
    "//zircon/system/ulib/zx",
  ]

  deps = [ "//src/lib/fxl" ]
}

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

  public_deps = [
    ":previous_boot_file",
    ":utc_clock_ready_watcher",
    "//src/lib/timekeeper:system",
    "//zircon/system/ulib/zx",
  ]

  deps = [
    ":time",
    "//src/lib/files",
  ]
}

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

  public_deps = [
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/zx",
  ]

  deps = [
    "//sdk/fidl/fuchsia.time:fuchsia.time_hlcpp",
    "//sdk/lib/syslog/cpp",
  ]
}
