Home | History | Annotate | Download | only in gl
      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