# 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("//build/config/ui.gni")

component("gl_in_process_context") {
  sources = [
    "command_buffer_task_executor.cc",
    "command_buffer_task_executor.h",
    "gl_in_process_context.cc",
    "gl_in_process_context.h",
    "gl_in_process_context_export.h",
    "gpu_in_process_thread_service.cc",
    "gpu_in_process_thread_service.h",
    "in_process_command_buffer.cc",
    "in_process_command_buffer.h",
  ]

  defines = [ "GL_IN_PROCESS_CONTEXT_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",

    # crbug.com/799267: crash_key needs to be added explicitly for Windows and
    # Mac even though it's not directly referenced, because it's being
    # implicitly depended upon by gpu/config/gpu_crash_keys.h but deps (even
    # public ones) are not transitive for static libraries.
    "//components/crash/core/common:crash_key",
    "//gpu/command_buffer/client",
    "//gpu/command_buffer/client:gles2_cmd_helper",
    "//gpu/command_buffer/client:gles2_implementation",
    "//gpu/command_buffer/client:raster",
    "//gpu/command_buffer/common",
    "//gpu/command_buffer/service",
    "//gpu/command_buffer/service:gles2",
    "//gpu/config",
    "//gpu/ipc/client",
    "//gpu/ipc/common",
    "//gpu/ipc/common:surface_handle_type",
    "//gpu/ipc/host",
    "//gpu/ipc/service",
    "//gpu/skia_bindings:skia_bindings",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/gl/init",
  ]
}

component("gpu_thread_holder") {
  testonly = true

  sources = [
    "in_process_gpu_thread_holder.cc",
    "in_process_gpu_thread_holder.h",
    "test_gpu_thread_holder.cc",
    "test_gpu_thread_holder.h",
  ]

  defines = [ "IS_GPU_THREAD_HOLDER_IMPL" ]

  public_deps = [
    "//gpu/config",
  ]

  deps = [
    ":gl_in_process_context",
    "//base",
    "//gpu/command_buffer/service",
    "//gpu/command_buffer/service:gles2",
    "//gpu/ipc/service",
  ]
}
