# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

if (is_component_build) {
  link_target_type = "source_set"
} else {
  link_target_type = "static_library"
}
target(link_target_type, "service") {
  visibility = [
    "//components/viz/service/*",
    "//content/gpu/*",
    "//content/public/gpu/*",
    "//media/*",
  ]

  sources = [
    "gpu_video_decode_accelerator.cc",
    "gpu_video_decode_accelerator.h",
    "media_gpu_channel.cc",
    "media_gpu_channel.h",
    "media_gpu_channel_manager.cc",
    "media_gpu_channel_manager.h",
  ]

  include_dirs = [ "//third_party/mesa/src/include" ]

  public_deps = [
    "//base",
    "//gpu/config",
    "//ipc",
    "//media",
    "//media/gpu",
  ]
  deps = [
    "//gpu/command_buffer/service:gles2",
    "//gpu/ipc/service",
    "//media:media_buildflags",
    "//media/gpu:buildflags",
    "//media/gpu/ipc/common",
    "//third_party/mesa:mesa_headers",
    "//ui/gfx/ipc/color",
  ]

  if (is_win) {
    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
  }

  if (is_mac) {
    deps += [ "//third_party/webrtc/common_video:common_video" ]
  }
}
