1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 { 6 'variables': { 7 'chromium_code': 1, 8 }, 9 10 'targets': [ 11 { 12 'target_name': 'gl', 13 'type': '<(component)', 14 'product_name': 'gl_wrapper', # Avoid colliding with OS X's libGL.dylib 15 'dependencies': [ 16 '<(DEPTH)/base/base.gyp:base', 17 '<(DEPTH)/base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', 18 '<(DEPTH)/gpu/command_buffer/command_buffer.gyp:gles2_utils', 19 '<(DEPTH)/skia/skia.gyp:skia', 20 '<(DEPTH)/third_party/mesa/mesa.gyp:mesa_headers', 21 '<(DEPTH)/ui/gfx/gfx.gyp:gfx', 22 '<(DEPTH)/ui/gfx/gfx.gyp:gfx_geometry', 23 ], 24 'variables': { 25 'gl_binding_output_dir': '<(SHARED_INTERMEDIATE_DIR)/ui/gl', 26 }, 27 'defines': [ 28 'GL_IMPLEMENTATION', 29 ], 30 'include_dirs': [ 31 '<(DEPTH)/third_party/swiftshader/include', 32 '<(DEPTH)/third_party/khronos', 33 '<(gl_binding_output_dir)', 34 ], 35 'direct_dependent_settings': { 36 'include_dirs': [ 37 '<(gl_binding_output_dir)', 38 ], 39 }, 40 'export_dependent_settings': [ 41 '<(DEPTH)/third_party/mesa/mesa.gyp:mesa_headers', 42 ], 43 'sources': [ 44 'android/gl_jni_registrar.cc', 45 'android/gl_jni_registrar.h', 46 'android/scoped_java_surface.cc', 47 'android/scoped_java_surface.h', 48 'android/surface_texture.cc', 49 'android/surface_texture.h', 50 'android/surface_texture_listener.cc', 51 'android/surface_texture_listener.h', 52 'android/surface_texture_tracker.cc', 53 'android/surface_texture_tracker.h', 54 'gl_bindings.h', 55 'gl_bindings_skia_in_process.cc', 56 'gl_bindings_skia_in_process.h', 57 'gl_context.cc', 58 'gl_context.h', 59 'gl_context_android.cc', 60 'gl_context_mac.mm', 61 'gl_context_ozone.cc', 62 'gl_context_osmesa.cc', 63 'gl_context_osmesa.h', 64 'gl_context_stub.cc', 65 'gl_context_stub.h', 66 'gl_context_stub_with_extensions.cc', 67 'gl_context_stub_with_extensions.h', 68 'gl_context_win.cc', 69 'gl_context_x11.cc', 70 'gl_export.h', 71 'gl_fence.cc', 72 'gl_fence.h', 73 'gl_fence_arb.cc', 74 'gl_fence_arb.h', 75 'gl_fence_nv.cc', 76 'gl_fence_nv.h', 77 'gl_gl_api_implementation.cc', 78 'gl_gl_api_implementation.h', 79 'gl_image.cc', 80 'gl_image.h', 81 'gl_image_memory.cc', 82 'gl_image_memory.h', 83 'gl_image_ref_counted_memory.cc', 84 'gl_image_ref_counted_memory.h', 85 'gl_image_shared_memory.cc', 86 'gl_image_shared_memory.h', 87 'gl_image_stub.cc', 88 'gl_image_stub.h', 89 'gl_implementation.cc', 90 'gl_implementation.h', 91 'gl_implementation_android.cc', 92 'gl_implementation_ozone.cc', 93 'gl_implementation_mac.cc', 94 'gl_implementation_win.cc', 95 'gl_implementation_x11.cc', 96 'gl_osmesa_api_implementation.cc', 97 'gl_osmesa_api_implementation.h', 98 'gl_share_group.cc', 99 'gl_share_group.h', 100 'gl_state_restorer.cc', 101 'gl_state_restorer.h', 102 'gl_surface.cc', 103 'gl_surface.h', 104 'gl_surface_android.cc', 105 'gl_surface_mac.cc', 106 'gl_surface_stub.cc', 107 'gl_surface_stub.h', 108 'gl_surface_win.cc', 109 'gl_surface_x11.cc', 110 'gl_surface_osmesa.cc', 111 'gl_surface_osmesa.h', 112 'gl_surface_ozone.cc', 113 'gl_switches.cc', 114 'gl_switches.h', 115 'gl_version_info.cc', 116 'gl_version_info.h', 117 'gpu_switching_manager.cc', 118 'gpu_switching_manager.h', 119 'scoped_binders.cc', 120 'scoped_binders.h', 121 'scoped_make_current.cc', 122 'scoped_make_current.h', 123 'sync_control_vsync_provider.cc', 124 'sync_control_vsync_provider.h', 125 '<(gl_binding_output_dir)/gl_bindings_autogen_gl.cc', 126 '<(gl_binding_output_dir)/gl_bindings_autogen_gl.h', 127 '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc', 128 '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h', 129 ], 130 # hard_dependency is necessary for this target because it has actions 131 # that generate header files included by dependent targets. The header 132 # files must be generated before the dependents are compiled. The usual 133 # semantics are to allow the two targets to build concurrently. 134 'hard_dependency': 1, 135 'actions': [ 136 { 137 'action_name': 'generate_gl_bindings', 138 'variables': { 139 'generator_path': 'generate_bindings.py', 140 # Prefer khronos EGL/GLES headers by listing that path first. 141 'header_paths': '../../third_party/khronos:../../third_party/mesa/src/include:.:../../gpu', 142 }, 143 'inputs': [ 144 '<(generator_path)', 145 '<!@(python <(generator_path) --header-paths=<(header_paths) --inputs)', 146 ], 147 'outputs': [ 148 '<(gl_binding_output_dir)/gl_bindings_autogen_egl.cc', 149 '<(gl_binding_output_dir)/gl_bindings_autogen_egl.h', 150 '<(gl_binding_output_dir)/gl_bindings_api_autogen_egl.h', 151 '<(gl_binding_output_dir)/gl_bindings_autogen_gl.cc', 152 '<(gl_binding_output_dir)/gl_bindings_autogen_gl.h', 153 '<(gl_binding_output_dir)/gl_bindings_api_autogen_gl.h', 154 '<(gl_binding_output_dir)/gl_bindings_autogen_glx.cc', 155 '<(gl_binding_output_dir)/gl_bindings_autogen_glx.h', 156 '<(gl_binding_output_dir)/gl_bindings_api_autogen_glx.h', 157 '<(gl_binding_output_dir)/gl_bindings_autogen_mock.cc', 158 '<(gl_binding_output_dir)/gl_bindings_autogen_mock.h', 159 '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc', 160 '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h', 161 '<(gl_binding_output_dir)/gl_bindings_api_autogen_osmesa.h', 162 '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.cc', 163 '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.h', 164 '<(gl_binding_output_dir)/gl_bindings_api_autogen_wgl.h', 165 '<(gl_binding_output_dir)/gl_mock_autogen_gl.h', 166 ], 167 'action': [ 168 'python', 169 '<(generator_path)', 170 '--header-paths=<(header_paths)', 171 '<(gl_binding_output_dir)', 172 ], 173 }, 174 ], 175 'conditions': [ 176 ['OS in ("win", "android", "linux")', { 177 'sources': [ 178 'egl_util.cc', 179 'egl_util.h', 180 'gl_context_egl.cc', 181 'gl_context_egl.h', 182 'gl_fence_egl.cc', 183 'gl_fence_egl.h', 184 'gl_image_egl.cc', 185 'gl_image_egl.h', 186 'gl_surface_egl.cc', 187 'gl_surface_egl.h', 188 'gl_egl_api_implementation.cc', 189 'gl_egl_api_implementation.h', 190 '<(gl_binding_output_dir)/gl_bindings_autogen_egl.cc', 191 '<(gl_binding_output_dir)/gl_bindings_autogen_egl.h', 192 ], 193 'include_dirs': [ 194 '<(DEPTH)/third_party/khronos', 195 ], 196 }], 197 ['OS in ("android", "linux")', { 198 'sources': [ 199 'gl_implementation_osmesa.cc', 200 'gl_implementation_osmesa.h', 201 ], 202 }], 203 ['use_x11 == 1', { 204 'sources': [ 205 'gl_context_glx.cc', 206 'gl_context_glx.h', 207 'gl_glx_api_implementation.cc', 208 'gl_glx_api_implementation.h', 209 'gl_image_glx.cc', 210 'gl_image_glx.h', 211 'gl_surface_glx.cc', 212 'gl_surface_glx.h', 213 'gl_egl_api_implementation.cc', 214 'gl_egl_api_implementation.h', 215 '<(gl_binding_output_dir)/gl_bindings_autogen_glx.cc', 216 '<(gl_binding_output_dir)/gl_bindings_autogen_glx.h', 217 ], 218 'all_dependent_settings': { 219 'defines': [ 220 'GL_GLEXT_PROTOTYPES', 221 ], 222 }, 223 'dependencies': [ 224 '<(DEPTH)/build/linux/system.gyp:x11', 225 '<(DEPTH)/build/linux/system.gyp:xcomposite', 226 '<(DEPTH)/build/linux/system.gyp:xext', 227 '<(DEPTH)/ui/events/platform/events_platform.gyp:events_platform', 228 '<(DEPTH)/ui/gfx/x/gfx_x11.gyp:gfx_x11', 229 ], 230 }], 231 ['OS=="win"', { 232 'sources': [ 233 'gl_context_wgl.cc', 234 'gl_context_wgl.h', 235 'gl_egl_api_implementation.cc', 236 'gl_egl_api_implementation.h', 237 'gl_surface_wgl.cc', 238 'gl_surface_wgl.h', 239 'gl_wgl_api_implementation.cc', 240 'gl_wgl_api_implementation.h', 241 '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.cc', 242 '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.h', 243 ], 244 'msvs_settings': { 245 'VCLinkerTool': { 246 'DelayLoadDLLs': [ 247 'dwmapi.dll', 248 ], 249 'AdditionalDependencies': [ 250 'dwmapi.lib', 251 ], 252 }, 253 }, 254 'link_settings': { 255 'libraries': [ 256 '-ldwmapi.lib', 257 ], 258 }, 259 }], 260 ['OS=="mac"', { 261 'sources': [ 262 'gl_context_cgl.cc', 263 'gl_context_cgl.h', 264 'gl_image_io_surface.cc', 265 'gl_image_io_surface.h', 266 'scoped_cgl.cc', 267 'scoped_cgl.h', 268 ], 269 'link_settings': { 270 'libraries': [ 271 '$(SDKROOT)/System/Library/Frameworks/IOSurface.framework', 272 '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework', 273 ], 274 }, 275 }], 276 ['OS=="android"', { 277 'dependencies': [ 278 'gl_jni_headers', 279 ], 280 'sources': [ 281 'gl_image_android_native_buffer.cc', 282 'gl_image_android_native_buffer.h', 283 'gl_image_surface_texture.cc', 284 'gl_image_surface_texture.h', 285 ], 286 'link_settings': { 287 'libraries': [ 288 '-landroid', 289 ], 290 }, 291 'sources!': [ 292 'system_monitor_posix.cc', 293 ], 294 'defines': [ 295 'GL_GLEXT_PROTOTYPES', 296 'EGL_EGLEXT_PROTOTYPES', 297 ], 298 }], 299 ['OS!="android"', { 300 'sources/': [ ['exclude', '^android/'] ], 301 }], 302 ['use_ozone==1', { 303 'dependencies': [ 304 '../ozone/ozone.gyp:ozone', 305 '../ozone/ozone.gyp:ozone_base', 306 ], 307 }], 308 ['OS=="android" and android_webview_build==0', { 309 'dependencies': [ 310 '../android/ui_android.gyp:ui_java', 311 ], 312 }], 313 ], 314 }, 315 { 316 'target_name': 'gl_unittest_utils', 317 'type': 'static_library', 318 'variables': { 319 'gl_binding_output_dir': '<(SHARED_INTERMEDIATE_DIR)/ui/gl', 320 }, 321 'dependencies': [ 322 '../../testing/gmock.gyp:gmock', 323 '../../third_party/khronos/khronos.gyp:khronos_headers', 324 'gl', 325 ], 326 'include_dirs': [ 327 '<(gl_binding_output_dir)', 328 '../..', 329 ], 330 'direct_dependent_settings': { 331 'include_dirs': [ 332 '<(gl_binding_output_dir)', 333 ], 334 }, 335 'sources': [ 336 'gl_mock.h', 337 'gl_mock.cc', 338 '<(gl_binding_output_dir)/gl_bindings_autogen_mock.cc', 339 '<(gl_binding_output_dir)/gl_bindings_autogen_mock.h', 340 '<(gl_binding_output_dir)/gl_mock_autogen_gl.h', 341 ], 342 }, 343 ], 344 'conditions': [ 345 ['OS=="android"' , { 346 'targets': [ 347 { 348 'target_name': 'surface_jni_headers', 349 'type': 'none', 350 'variables': { 351 'jni_gen_package': 'ui/gl', 352 'input_java_class': 'android/view/Surface.class', 353 }, 354 'includes': [ '../../build/jar_file_jni_generator.gypi' ], 355 }, 356 { 357 'target_name': 'gl_jni_headers', 358 'type': 'none', 359 'dependencies': [ 360 'surface_jni_headers', 361 ], 362 'sources': [ 363 '../android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java', 364 '../android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java', 365 ], 366 'variables': { 367 'jni_gen_package': 'ui/gl', 368 }, 369 'includes': [ '../../build/jni_generator.gypi' ], 370 }, 371 ], 372 }], 373 ], 374 } 375