# 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.

import("//media/media_options.gni")
import("//third_party/widevine/cdm/widevine.gni")

static_library("gpu") {
  deps = [
    "//components/metrics:child_call_stack_profile_builder",
    "//content/public/common",
    "//content/public/gpu",
    "//third_party/widevine/cdm:buildflags",
  ]

  sources = [
    "chrome_content_gpu_client.cc",
    "chrome_content_gpu_client.h",
  ]

  if (enable_library_cdms) {
    deps += [
      "//media/cdm:cdm_paths",
      "//media/cdm/library_cdm/clear_key_cdm:clear_key_cdm_proxy",
    ]

    if (enable_widevine && is_win) {
      sources += [
        "widevine_cdm_proxy_factory.cc",
        "widevine_cdm_proxy_factory.h",
      ]
      deps += [
        "//media",
        "//media/gpu",
      ]
      libs = [ "d3d11.lib" ]
    }
  }

  if (is_chromeos) {
    deps += [
      "//components/arc/common:media",
      "//components/arc/video_accelerator",
      "//gpu/command_buffer/service",
      "//services/service_manager/public/cpp",
      "//ui/ozone",
    ]
  }
}
