# 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/package.gni")
import("//build/package/component.gni")

package("feedback_agent") {
  components = [ ":component" ]
}

fuchsia_component("component") {
  binary = "feedback_agent"

  manifest = "meta/feedback_agent.cmx"

  deps = [
    ":main",
  ]
}

executable("main") {
  output_name = "feedback_agent"

  sources = [
    "main.cc",
  ]

  deps = [
    ":src",
    "//garnet/public/lib/syslog/cpp",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

source_set("src") {
  sources = [
    "annotations.cc",
    "annotations.h",
    "attachments.cc",
    "attachments.h",
    "feedback_agent.cc",
    "feedback_agent.h",
    "image_conversion.cc",
    "image_conversion.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/fidl/fuchsia.images",
    "//sdk/lib/sys/cpp",
    "//zircon/public/fidl/fuchsia-mem",
  ]

  deps = [
    "//garnet/public/lib/fostr/fidl/fuchsia.images",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/syslog/cpp",
    "//sdk/fidl/fuchsia.ui.scenic",
    "//sdk/lib/fidl/cpp",
    "//src/lib/files",
    "//third_party/libpng",
    "//zircon/public/fidl/fuchsia-sysinfo",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/zx",
  ]
}
