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

import("//build/config.gni")

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

  public_deps = [
    "//src/developer/forensics/feedback_data/annotations:types",
    "//src/developer/forensics/feedback_data/attachments:types",
    "//zircon/public/lib/zx",
  ]

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

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

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

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

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

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

  sources = [
    "data_provider.cc",
    "data_provider.h",
    "image_conversion.cc",
    "image_conversion.h",
  ]

  public_deps = [
    ":metadata",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/utils/cobalt",
    "//src/lib/timekeeper:system",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
  ]

  deps = [
    ":constants",
    ":datastore",
    "//garnet/public/lib/fostr/fidl/fuchsia.images",
    "//sdk/fidl/fuchsia.images",
    "//sdk/fidl/fuchsia.mem",
    "//sdk/fidl/fuchsia.ui.scenic",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback_data/annotations:types",
    "//src/developer/forensics/feedback_data/annotations:utils",
    "//src/developer/forensics/feedback_data/attachments:attachment_providers",
    "//src/developer/forensics/feedback_data/attachments:types",
    "//src/developer/forensics/utils:archive",
    "//src/developer/forensics/utils/fit",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//src/lib/uuid",
    "//third_party/libpng",
  ]

  # TODO(fxb/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

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

  public_deps = [
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/feedback_data/annotations:annotation_providers",
    "//src/developer/forensics/feedback_data/annotations:types",
    "//src/developer/forensics/feedback_data/attachments:types",
    "//src/developer/forensics/utils/cobalt",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
  ]

  deps = [
    ":constants",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback_data/annotations:annotation_providers",
    "//src/developer/forensics/feedback_data/annotations:static_annotations",
    "//src/developer/forensics/feedback_data/attachments:attachment_providers",
    "//src/developer/forensics/feedback_data/attachments:static_attachments",
  ]
}

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

  public_deps = [
    ":constants",
    ":datastore",
    "//sdk/fidl/fuchsia.feedback",
    "//src/developer/forensics/feedback_data/annotations:types",
    "//src/lib/fxl",
  ]

  deps = [
    "//sdk/lib/syslog/cpp",

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

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

  public_deps = [
    "//sdk/fidl/fuchsia.feedback",
    "//src/developer/forensics/feedback_data/annotations:types",
  ]

  deps = [
    ":constants",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/utils:errors",
    "//src/lib/files",
    "//src/lib/fxl",
    "//src/lib/uuid",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

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

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

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

  public_deps = [
    ":config",
    ":data_provider",
    ":data_register",
    ":datastore",
    ":device_id_provider",
    ":inspect_manager",
    "//src/developer/forensics/utils/cobalt",
    "//src/lib/fxl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
  ]

  deps = [
    ":constants",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//zircon/public/lib/zx",
  ]
}

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

  sources = [
    "inspect_manager.cc",
    "inspect_manager.h",
  ]

  public_deps = [ "//src/developer/forensics/utils:inspect_node_manager" ]

  deps = [ "//src/developer/forensics/utils:inspect_protocol_stats" ]
}

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

  public_deps = [
    "//src/developer/forensics/feedback_data/annotations:types",
    "//src/developer/forensics/feedback_data/attachments:types",
    "//src/developer/forensics/utils:utc_time_provider",
    "//zircon/public/lib/fit",
  ]

  deps = [
    ":constants",
    ":errors",
    "//src/developer/forensics/utils:errors",

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

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

  deps = [
    ":main_service",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/utils/component",
    "//zircon/public/lib/zx",
  ]
}

###############################################################################
# CONFIGS
###############################################################################
config_data("sysmgr_config") {
  for_pkg = "sysmgr"

  sources = [ "config/sysmgr.config" ]
  outputs = [ "device_id_provider.config" ]
}
