# 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("annotation_providers") {
  public = [
    "annotation_provider.h",
    "annotation_provider_factory.h",
  ]

  sources = [
    "annotation_provider.h",
    "annotation_provider_factory.cc",
    "annotation_provider_factory.h",
    "time_provider.cc",
    "time_provider.h",
  ]

  deps = [
    ":board_info_provider",
    ":channel_provider",
    ":last_reboot_info_provider",
    ":product_info_provider",
    ":types",
    ":utils",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback_data:constants",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils:time",
    "//src/lib/fxl",
    "//src/lib/timekeeper",
    "//src/lib/timekeeper:system",
    "//zircon/public/lib/fit",
  ]
}

# Exposed separately for unit test purposes.
source_set("board_info_provider") {
  public = [ "board_info_provider.h" ]

  sources = [
    "annotation_provider.h",
    "board_info_provider.cc",
    "board_info_provider.h",
  ]

  public_deps = [
    ":types",
    "//sdk/fidl/fuchsia.hwinfo",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils/cobalt",
    "//src/developer/forensics/utils/fidl:caching_ptr",
  ]

  deps = [
    ":utils",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/feedback_data:constants",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils/fit",
    "//src/lib/fxl",
    "//zircon/public/lib/fit",
  ]
}

# Exposed separately for unit test purposes.
source_set("channel_provider") {
  public = [ "channel_provider.h" ]

  sources = [
    "annotation_provider.h",
    "channel_provider.cc",
    "channel_provider.h",
  ]

  public_deps = [
    ":types",
    "//sdk/fidl/fuchsia.update.channel",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/utils/cobalt",
    "//src/lib/fxl",
    "//zircon/public/lib/async",
    "//zircon/public/lib/zx",
  ]

  deps = [
    ":utils",
    "//src/developer/forensics/feedback_data:constants",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils/fidl:channel_provider_ptr",
    "//src/developer/forensics/utils/fit",
  ]
}

# Exposed separately for unit test purposes.
source_set("last_reboot_info_provider") {
  public = [ "last_reboot_info_provider.h" ]

  sources = [
    "annotation_provider.h",
    "last_reboot_info_provider.cc",
    "last_reboot_info_provider.h",
  ]

  public_deps = [
    ":types",
    "//sdk/fidl/fuchsia.feedback",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils/cobalt",
    "//src/developer/forensics/utils/fidl:caching_ptr",
  ]

  deps = [
    ":utils",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/feedback_data:constants",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils:time",
    "//src/developer/forensics/utils/fit",
    "//src/lib/fxl",
    "//zircon/public/lib/fit",
  ]
}

# Exposed separately for unit test purposes.
source_set("product_info_provider") {
  public = [ "product_info_provider.h" ]

  sources = [
    "annotation_provider.h",
    "product_info_provider.cc",
    "product_info_provider.h",
  ]

  public_deps = [
    ":types",
    "//sdk/fidl/fuchsia.hwinfo",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils/cobalt",
    "//src/developer/forensics/utils/fidl:caching_ptr",
  ]

  deps = [
    ":utils",
    "//sdk/fidl/fuchsia.intl",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/feedback_data:constants",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils/fit",
    "//src/lib/fxl",
    "//zircon/public/lib/fit",
  ]
}

source_set("static_annotations") {
  public = [ "static_annotations.h" ]

  sources = [
    "board_name_provider.cc",
    "board_name_provider.h",
    "static_annotations.cc",
    "static_annotations.h",
  ]

  public_deps = [
    ":types",
    "//src/developer/forensics/feedback_data:device_id_provider",
  ]

  deps = [
    ":utils",
    "//sdk/fidl/fuchsia.sysinfo",
    "//sdk/lib/fdio",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback_data:constants",
    "//src/developer/forensics/utils:errors",
    "//src/lib/files",
    "//src/lib/fxl",
  ]
}

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

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

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

  public_deps = [
    ":types",
    "//sdk/fidl/fuchsia.feedback",
  ]

  # TODO(fxbug.dev/57392): Move it back to //third_party once unification completes.
  deps = [ "//zircon/third_party/rapidjson" ]
}
