# Copyright 2017 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/fuchsia/rules.gni")
import("//build/package.gni")

driver_module("usb_video_driver") {
  output_name = "usb_video"

  sources = [
    "camera_control_impl.cpp",
    "camera_control_impl.h",
    "usb-video-stream.cpp",
    "usb-video-stream.h",
    "usb-video.cpp",
    "usb-video.h",
    "uvc_format.cpp",
    "uvc_format.h",
    "video-util.c",
    "video-util.h",
  ]

  deps = [
    "//garnet/public/lib/fxl",
    "//sdk/fidl/fuchsia.camera",
    "//sdk/lib/fidl/cpp",
    "//zircon/public/banjo/ddk.protocol.usb",
    "//zircon/public/fidl/fuchsia-hardware-camera:fuchsia-hardware-camera_c",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/ddktl",
    "//zircon/public/lib/driver",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fzl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/usb",
    "//zircon/public/lib/zx",
  ]

  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
}

package("usb_video") {
  deprecated_system_image = true

  deps = [
    ":usb_video_driver",
  ]

  drivers = [
    {
      name = "usb_video.so"
    },
  ]
}
