blob: 3c0a5bb7dc230fdefa94dbac60025a1cb3d4c487 [file] [log] [blame]
# 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.mm",
"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_ios || is_mac) {
sources = []
sources = [
"gl_bindings_autogen_gl.cc",
"gl_bindings_autogen_gl.h",
"gl_bindings_skia_in_process.cc",
"gl_bindings_skia_in_process.h",
"gl_context.cc",
"gl_context.h",
"gl_context_ios.h",
"gl_context_ios.mm",
"gl_context_mac.h",
"gl_context_mac.mm",
"gl_context_stub.cc",
"gl_context_stub.h",
"gl_context_stub_with_extensions.cc",
"gl_context_stub_with_extensions.h",
"gl_enums.cc",
"gl_enums.h",
"gl_enums_implementation_autogen.h",
"gl_gl_api_implementation.cc",
"gl_gl_api_implementation.h",
"gl_implementation.cc",
"gl_implementation.h",
"gl_implementation_ios.cc",
"gl_implementation_mac.cc",
"gl_share_group.cc",
"gl_share_group.h",
"gl_surface.cc",
"gl_surface.h",
"gl_surface_ios.h",
"gl_surface_ios.mm",
"gl_surface_mac.h",
"gl_surface_mac.mm",
"gl_surface_stub.cc",
"gl_surface_stub.h",
"gl_switches.cc",
"gl_switches.h",
"gl_version_info.cc",
"gl_version_info.h",
"gpu_timing.cc",
"gpu_timing.h",
]
}
if (is_mac) {
sources += [
"gl_context_cgl.cc",
"gl_context_cgl.h",
"gpu_switching_manager.cc",
"gpu_switching_manager.h",
]
}
}
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"
}
}