# 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 = [
    "binding.c",
    "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/fidl/fuchsia.camera",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fidl/cpp",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/ddktl",
    "//zircon/public/lib/dispatcher-pool",
    "//zircon/public/lib/driver",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/usb",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/fzl",
    "//zircon/public/lib/zxcpp",
  ]

  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"
    },
  ]
}
