# 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/components.gni")
import("//build/fidl/fidl.gni")
import("//src/camera/debug.gni")

group("factory") {
  deps = [ ":camera_factory" ]
}

source_set("lib") {
  sources = [
    "capture.cc",
    "capture.h",
    "factory_server.cc",
    "factory_server.h",
    "streamer.cc",
    "streamer.h",
    "web_ui.cc",
    "web_ui.h",
  ]

  deps = [
    "//sdk/lib/fdio",
    "//sdk/lib/sys/cpp",
    "//src/lib/files:files",
  ]

  public_deps = [
    ":fuchsia.factory.camera_hlcpp",
    "//sdk/fidl/fuchsia.camera3:fuchsia.camera3_hlcpp",
    "//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app_hlcpp",
    "//sdk/fidl/fuchsia.ui.scenic:fuchsia.ui.scenic_hlcpp",
    "//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views_hlcpp",
    "//sdk/lib/fit",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//sdk/lib/ui/scenic/cpp",
    "//src/lib/fsl",
    "//third_party/libpng",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

executable("camera_factory_bin") {
  defines = [ camera_debug_define ]
  sources = [ "main.cc" ]

  deps = [ ":lib" ]
}

fidl("fuchsia.factory.camera") {
  sdk_category = "internal"

  # TODO(https://fxbug.dev/42111344): Remove lint exclusions by fixing known FIDL lint violations in this target
  excluded_checks = [
    "string-bounds-not-specified",
    "invalid-case-for-decl-name",
  ]

  sources = [ "factory.fidl" ]

  public_deps = [ "//sdk/fidl/fuchsia.images" ]

  enable_hlcpp = true
}

fuchsia_package_with_single_component("camera_factory") {
  manifest = "meta/camera_factory.cml"
  deps = [ ":camera_factory_bin" ]
}
