| # 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. | 
 |  | 
 | import("//build/config/ui.gni") | 
 | if (is_android) { | 
 |   import("//build/config/android/config.gni") | 
 |   import("//build/config/android/rules.gni") | 
 | } | 
 |  | 
 | config("gl_config") { | 
 |   if (use_x11) { | 
 |     defines = [ "GL_GLEXT_PROTOTYPES" ] | 
 |   } | 
 | } | 
 |  | 
 | component("gl") { | 
 |   output_name = "gl_wrapper"  # Avoid colliding with OS X"s libGL.dylib. | 
 |  | 
 |   sources = [ | 
 |     "android/gl_jni_registrar.cc", | 
 |     "android/gl_jni_registrar.h", | 
 |     "android/scoped_java_surface.cc", | 
 |     "android/scoped_java_surface.h", | 
 |     "android/surface_texture.cc", | 
 |     "android/surface_texture.h", | 
 |     "android/surface_texture_listener.cc", | 
 |     "android/surface_texture_listener.h", | 
 |     "egl_util.cc", | 
 |     "egl_util.h", | 
 |     "gl_bindings.cc", | 
 |     "gl_bindings.h", | 
 |     "gl_bindings_autogen_egl.cc", | 
 |     "gl_bindings_autogen_egl.h", | 
 |     "gl_bindings_autogen_gl.cc", | 
 |     "gl_bindings_autogen_gl.h", | 
 |     "gl_bindings_autogen_osmesa.cc", | 
 |     "gl_bindings_autogen_osmesa.h", | 
 |     "gl_bindings_skia_in_process.cc", | 
 |     "gl_bindings_skia_in_process.h", | 
 |     "gl_context.cc", | 
 |     "gl_context.h", | 
 |     "gl_context_android.cc", | 
 |     "gl_context_egl.cc", | 
 |     "gl_context_egl.h", | 
 |     "gl_context_mac.mm", | 
 |     "gl_context_osmesa.cc", | 
 |     "gl_context_osmesa.h", | 
 |     "gl_context_stub.cc", | 
 |     "gl_context_stub.h", | 
 |     "gl_context_stub_with_extensions.cc", | 
 |     "gl_context_stub_with_extensions.h", | 
 |     "gl_context_win.cc", | 
 |     "gl_enums.cc", | 
 |     "gl_enums.h", | 
 |     "gl_enums_implementation_autogen.h", | 
 |     "gl_export.h", | 
 |     "gl_fence.cc", | 
 |     "gl_fence.h", | 
 |     "gl_fence_arb.cc", | 
 |     "gl_fence_arb.h", | 
 |     "gl_fence_egl.cc", | 
 |     "gl_fence_egl.h", | 
 |     "gl_fence_nv.cc", | 
 |     "gl_fence_nv.h", | 
 |     "gl_gl_api_implementation.cc", | 
 |     "gl_gl_api_implementation.h", | 
 |     "gl_image.h", | 
 |     "gl_image_egl.cc", | 
 |     "gl_image_egl.h", | 
 |     "gl_image_memory.cc", | 
 |     "gl_image_memory.h", | 
 |     "gl_image_ref_counted_memory.cc", | 
 |     "gl_image_ref_counted_memory.h", | 
 |     "gl_image_shared_memory.cc", | 
 |     "gl_image_shared_memory.h", | 
 |     "gl_image_stub.cc", | 
 |     "gl_image_stub.h", | 
 |     "gl_implementation.cc", | 
 |     "gl_implementation.h", | 
 |     "gl_implementation_android.cc", | 
 |     "gl_implementation_mac.cc", | 
 |     "gl_implementation_win.cc", | 
 |     "gl_osmesa_api_implementation.cc", | 
 |     "gl_osmesa_api_implementation.h", | 
 |     "gl_share_group.cc", | 
 |     "gl_share_group.h", | 
 |     "gl_state_restorer.cc", | 
 |     "gl_state_restorer.h", | 
 |     "gl_surface.cc", | 
 |     "gl_surface.h", | 
 |     "gl_surface_android.cc", | 
 |     "gl_surface_egl.cc", | 
 |     "gl_surface_egl.h", | 
 |     "gl_surface_mac.cc", | 
 |     "gl_surface_osmesa.cc", | 
 |     "gl_surface_osmesa.h", | 
 |     "gl_surface_stub.cc", | 
 |     "gl_surface_stub.h", | 
 |     "gl_surface_win.cc", | 
 |     "gl_switches.cc", | 
 |     "gl_switches.h", | 
 |     "gl_version_info.cc", | 
 |     "gl_version_info.h", | 
 |     "gpu_switching_manager.cc", | 
 |     "gpu_switching_manager.h", | 
 |     "gpu_timing.cc", | 
 |     "gpu_timing.h", | 
 |     "scoped_binders.cc", | 
 |     "scoped_binders.h", | 
 |     "scoped_make_current.cc", | 
 |     "scoped_make_current.h", | 
 |     "sync_control_vsync_provider.cc", | 
 |     "sync_control_vsync_provider.h", | 
 |   ] | 
 |  | 
 |   defines = [ "GL_IMPLEMENTATION" ] | 
 |  | 
 |   include_dirs = [ | 
 |     "//third_party/switfshader/include", | 
 |     "//third_party/khronos", | 
 |     "//third_party/mesa/src/include", | 
 |   ] | 
 |  | 
 |   all_dependent_configs = [ ":gl_config" ] | 
 |  | 
 |   deps = [ | 
 |     "//base/third_party/dynamic_annotations", | 
 |     "//gpu/command_buffer/common", | 
 |     "//skia", | 
 |   ] | 
 |   public_deps = [ | 
 |     "//base", | 
 |     "//third_party/mesa:mesa_headers", | 
 |     "//ui/events/platform", | 
 |     "//ui/gfx", | 
 |     "//ui/gfx/geometry", | 
 |   ] | 
 |  | 
 |   if (is_android || is_linux) { | 
 |     sources += [ | 
 |       "gl_implementation_osmesa.cc", | 
 |       "gl_implementation_osmesa.h", | 
 |     ] | 
 |   } | 
 |   if (is_linux) { | 
 |     deps += [ "//third_party/libevent" ] | 
 |     sources += [ | 
 |       "gl_image_linux_dma_buffer.cc", | 
 |       "gl_image_linux_dma_buffer.h", | 
 |     ] | 
 |   } | 
 |   if (use_x11) { | 
 |     sources += [ | 
 |       "gl_bindings_autogen_glx.cc", | 
 |       "gl_bindings_autogen_glx.h", | 
 |       "gl_context_glx.cc", | 
 |       "gl_context_glx.h", | 
 |       "gl_context_x11.cc", | 
 |       "gl_egl_api_implementation.cc", | 
 |       "gl_egl_api_implementation.h", | 
 |       "gl_glx_api_implementation.cc", | 
 |       "gl_glx_api_implementation.h", | 
 |       "gl_image_glx.cc", | 
 |       "gl_image_glx.h", | 
 |       "gl_implementation_x11.cc", | 
 |       "gl_surface_glx.cc", | 
 |       "gl_surface_glx.h", | 
 |       "gl_surface_x11.cc", | 
 |     ] | 
 |  | 
 |     configs += [ | 
 |       "//build/config/linux:x11", | 
 |       "//build/config/linux:xcomposite", | 
 |       "//build/config/linux:xext", | 
 |     ] | 
 |  | 
 |     deps += [ "//ui/gfx/x" ] | 
 |   } | 
 |   if (is_android) { | 
 |     sources += [ | 
 |       "gl_egl_api_implementation.cc", | 
 |       "gl_egl_api_implementation.h", | 
 |       "gl_image_surface_texture.cc", | 
 |       "gl_image_surface_texture.h", | 
 |     ] | 
 |  | 
 |     defines += [ | 
 |       "GL_GLEXT_PROTOTYPES", | 
 |       "EGL_EGLEXT_PROTOTYPES", | 
 |     ] | 
 |  | 
 |     libs = [ "android" ] | 
 |  | 
 |     deps += [ ":gl_jni_headers" ] | 
 |   } | 
 |   if (use_ozone) { | 
 |     sources += [ | 
 |       "gl_context_ozone.cc", | 
 |       "gl_egl_api_implementation.cc", | 
 |       "gl_egl_api_implementation.h", | 
 |       "gl_implementation_ozone.cc", | 
 |       "gl_surface_ozone.cc", | 
 |     ] | 
 |     deps += [ | 
 |       "//ui/ozone", | 
 |       "//ui/ozone:ozone_base", | 
 |     ] | 
 |   } | 
 |  | 
 |   if (is_android) { | 
 |     deps += [ "//ui/android:ui_java" ] | 
 |   } | 
 | } | 
 |  | 
 | source_set("gl_unittest_utils") { | 
 |   testonly = true | 
 |   sources = [ | 
 |     "gl_bindings_autogen_mock.cc", | 
 |     "gl_bindings_autogen_mock.h", | 
 |     "gl_mock.cc", | 
 |     "gl_mock.h", | 
 |     "gl_mock_autogen_gl.h", | 
 |   ] | 
 |  | 
 |   configs += [ "//third_party/khronos:khronos_headers" ] | 
 |  | 
 |   deps = [ | 
 |     ":gl", | 
 |     "//testing/gmock", | 
 |   ] | 
 | } | 
 |  | 
 | if (is_android) { | 
 |   generate_jar_jni("surface_jni_headers") { | 
 |     jni_package = "ui/gl" | 
 |     classes = [ "android/view/Surface.class" ] | 
 |   } | 
 |  | 
 |   generate_jni("gl_jni_headers") { | 
 |     deps = [ | 
 |       ":surface_jni_headers", | 
 |     ] | 
 |     sources = [ | 
 |       "../android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java", | 
 |       "../android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java", | 
 |     ] | 
 |     jni_package = "ui/gl" | 
 |   } | 
 | } |