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

# GYP version: gpu/blink/gpu_blink.gyp:gpu_blink
component("blink") {
  output_name = "gpu_blink"

  sources = [
    "gpu_blink_export.h",
    "webgraphicscontext3d_impl.cc",
    "webgraphicscontext3d_impl.h",
    "webgraphicscontext3d_in_process_command_buffer_impl.cc",
    "webgraphicscontext3d_in_process_command_buffer_impl.h",
  ]

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  defines = [ "GPU_BLINK_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//cc",
    "//gpu/command_buffer/common",
    "//gpu/command_buffer/service",
    "//gpu/command_buffer/client:gles2_c_lib",
    "//gpu/command_buffer/client:gles2_implementation",
    "//gpu/command_buffer/client:gl_in_process_context",
    "//gpu/skia_bindings",
    "//skia",
    "//third_party/WebKit/public:blink_minimal",
    "//third_party/angle:translator",
    "//ui/gl",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}
