Index: ui/gl/BUILD.gn |
diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..70c5ad4e2a7d08f28227efc3e81f1d97e2b33751 |
--- /dev/null |
+++ b/ui/gl/BUILD.gn |
@@ -0,0 +1,289 @@ |
+# 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") |
+ |
+gl_binding_output_dir = target_gen_dir |
+ |
+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", |
+ "android/surface_texture_tracker.cc", |
+ "android/surface_texture_tracker.h", |
+ "gl_bindings.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_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_context_x11.cc", |
+ "gl_export.h", |
+ "gl_fence.cc", |
+ "gl_fence.h", |
+ "gl_gl_api_implementation.cc", |
+ "gl_gl_api_implementation.h", |
+ "gl_image.cc", |
+ "gl_image.h", |
+ "gl_image_android.cc", |
+ "gl_image_mac.cc", |
+ "gl_image_shm.cc", |
+ "gl_image_shm.h", |
+ "gl_image_stub.cc", |
+ "gl_image_stub.h", |
+ "gl_image_win.cc", |
+ "gl_image_x11.cc", |
+ "gl_implementation.cc", |
+ "gl_implementation.h", |
+ "gl_implementation_android.cc", |
+ "gl_implementation_mac.cc", |
+ "gl_implementation_win.cc", |
+ "gl_implementation_x11.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_mac.cc", |
+ "gl_surface_stub.cc", |
+ "gl_surface_stub.h", |
+ "gl_surface_win.cc", |
+ "gl_surface_x11.cc", |
+ "gl_surface_osmesa.cc", |
+ "gl_surface_osmesa.h", |
+ "gl_switches.cc", |
+ "gl_switches.h", |
+ "gl_version_info.cc", |
+ "gl_version_info.h", |
+ "gpu_switching_manager.cc", |
+ "gpu_switching_manager.h", |
+ "io_surface_support_mac.cc", |
+ "io_surface_support_mac.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", |
+ "$gl_binding_output_dir/gl_bindings_autogen_gl.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_gl.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_osmesa.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_osmesa.h", |
+ ] |
+ |
+ defines = [ "GL_IMPLEMENTATION" ] |
+ |
+ include_dirs = [ |
+ "//third_party/switfshader/include", |
+ "//third_party/khronos", |
+ "//third_party/mesa/src/include", |
+ gl_binding_output_dir, |
+ ] |
+ |
+ all_dependent_configs = [ ":gl_config" ] |
+ |
+ deps = [ |
+ ":generate_gl_bindings", |
+ "//base", |
+ "//base/third_party/dynamic_annotations", |
+ "//gpu/command_buffer:gles2_utils", |
+ "//skia", |
+ # TODO(GYP) hook up once this is converted. |
+ # Also uncomment forward statement below. |
+ #"//third_party/mesa:mesa_headers", |
+ "//ui/gfx", |
+ "//ui/gfx/geometry", |
+ ] |
+ |
+ # TODO(GYP) hook up once this is converted. |
+ #forward_dependent_configs_from = [ "//third_party/mesa:mesa_headers" ] |
+ |
+ if (is_win || is_android || is_linux) { |
+ sources += [ |
+ "egl_util.cc", |
+ "egl_util.h", |
+ "gl_context_egl.cc", |
+ "gl_context_egl.h", |
+ "gl_image_egl.cc", |
+ "gl_image_egl.h", |
+ "gl_surface_egl.cc", |
+ "gl_surface_egl.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_egl.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_egl.h", |
+ ] |
+ } |
+ if (is_android || is_linux) { |
+ sources += [ |
+ "gl_implementation_osmesa.cc", |
+ "gl_implementation_osmesa.h", |
+ ] |
+ } |
+ if (use_x11) { |
+ sources += [ |
+ "gl_context_glx.cc", |
+ "gl_context_glx.h", |
+ "gl_glx_api_implementation.cc", |
+ "gl_glx_api_implementation.h", |
+ "gl_image_glx.cc", |
+ "gl_image_glx.h", |
+ "gl_surface_glx.cc", |
+ "gl_surface_glx.h", |
+ "gl_egl_api_implementation.cc", |
+ "gl_egl_api_implementation.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_glx.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_glx.h", |
+ ] |
+ |
+ configs += [ |
+ "//build/config/linux:x11", |
+ "//build/config/linux:xcomposite", |
+ "//build/config/linux:xext", |
+ ] |
+ |
+ deps += [ |
+ "//ui/gfx/x", |
+ ] |
+ } |
+ if (is_win) { |
+ sources += [ |
+ "gl_context_wgl.cc", |
+ "gl_context_wgl.h", |
+ "gl_egl_api_implementation.cc", |
+ "gl_egl_api_implementation.h", |
+ "gl_surface_wgl.cc", |
+ "gl_surface_wgl.h", |
+ "gl_wgl_api_implementation.cc", |
+ "gl_wgl_api_implementation.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_wgl.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_wgl.h", |
+ ] |
+ |
+ libs = [ "dwmapi.lib" ] |
+ ldflags = [ "/DELAYLOAD:dwmapi.dll" ] |
+ } |
+ if (is_mac) { |
+ sources += [ |
+ "gl_context_cgl.cc", |
+ "gl_context_cgl.h", |
+ "gl_image_io_surface.cc", |
+ "gl_image_io_surface.h", |
+ "gl_surface_cgl.cc", |
+ "gl_surface_cgl.h", |
+ "scoped_cgl.cc", |
+ "scoped_cgl.h", |
+ ] |
+ |
+ libs = [ "OpenGL.framework" ] |
+ } |
+ if (is_android) { |
+ sources += [ |
+ "gl_egl_api_implementation.cc", |
+ "gl_egl_api_implementation.h", |
+ "gl_image_android_native_buffer.cc", |
+ "gl_image_android_native_buffer.h", |
+ "gl_image_surface_texture.cc", |
+ "gl_image_surface_texture.h", |
+ ] |
+ |
+ defines += [ |
+ "GL_GLEXT_PROTOTYPES", |
+ "EGL_EGLEXT_PROTOTYPES", |
+ ] |
+ |
+ libs = [ "android" ] |
+ } |
+ if (use_ozone) { |
+ sources += [ |
+ "gl_context_ozone.cc", |
+ "gl_image_ozone.cc", |
+ "gl_implementation_ozone.cc", |
+ "gl_surface_ozone.cc", |
+ ] |
+ deps += [ |
+ "//ui/gfx/ozone", |
+ "//ui/ozone", |
+ ] |
+ } |
+ |
+ # TODO(GYP) enable this dependency once its written. |
+ #if (is_android && !android_webview_build) { |
+ # deps += [ "//ui/android:ui_java" ] |
+ #} |
+} |
+ |
+action("generate_gl_bindings") { |
+ script = "generate_bindings.py" |
+ |
+ # TODO(brettw) make this dynamic. The GYP version calls "generate_bindings.py |
+ # --inputs" to get the list here. What should happen is that the script |
+ # should generate a .d file, which we should declare here. That will |
+ # eliminate the need bot both hardcoding the list here or calling the script |
+ # during GN-time. |
+ source_prereqs = [ |
+ "EGL/eglextchromium.h", |
+ "GL/glextchromium.h", |
+ "//third_party/mesa/src/include/GL/glext.h", |
+ "//third_party/khronos/GLES2/gl2ext.h", |
+ "//gpu/GLES2/gl2chromium.h", |
+ "//gpu/GLES2/gl2extchromium.h", |
+ "//third_party/khronos/EGL/eglext.h", |
+ "//third_party/mesa/src/include/GL/wglext.h", |
+ "//third_party/mesa/src/include/GL/glx.h", |
+ "//third_party/mesa/src/include/GL/glxext.h", |
+ ] |
+ |
+ outputs = [ |
+ "$gl_binding_output_dir/gl_bindings_autogen_egl.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_egl.h", |
+ "$gl_binding_output_dir/gl_bindings_api_autogen_egl.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_gl.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_gl.h", |
+ "$gl_binding_output_dir/gl_bindings_api_autogen_gl.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_glx.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_glx.h", |
+ "$gl_binding_output_dir/gl_bindings_api_autogen_glx.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_mock.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_mock.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_osmesa.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_osmesa.h", |
+ "$gl_binding_output_dir/gl_bindings_api_autogen_osmesa.h", |
+ "$gl_binding_output_dir/gl_bindings_autogen_wgl.cc", |
+ "$gl_binding_output_dir/gl_bindings_autogen_wgl.h", |
+ "$gl_binding_output_dir/gl_bindings_api_autogen_wgl.h", |
+ "$gl_binding_output_dir/gl_mock_autogen_gl.h", |
+ ] |
+ |
+ args = [ |
+ "--header-paths=" + |
+ rebase_path("//third_party/khronos", root_build_dir) + ":" + |
+ rebase_path("//third_party/mesa/src/include", root_build_dir), |
+ rebase_path(gl_binding_output_dir, root_build_dir), |
+ ] |
+} |