Revert 219061 "Introduce facade for interaction with Android Sur..."
[chromium-blink-merge.git] / ui / gl / gl.gyp
blob940578beeb7ff26ff8f713ff92dd50b07978b3af
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.
6   'variables': {
7     'chromium_code': 1,
8   },
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/ui.gyp:ui',
22       ],
23       'variables': {
24         'gl_binding_output_dir': '<(SHARED_INTERMEDIATE_DIR)/ui/gl',
25       },
26       'defines': [
27         'GL_IMPLEMENTATION',
28       ],
29       'include_dirs': [
30         '<(DEPTH)/third_party/swiftshader/include',
31         '<(DEPTH)/third_party/mesa/src/include',
32         '<(gl_binding_output_dir)',
33       ],
34       'direct_dependent_settings': {
35         'include_dirs': [
36           '<(gl_binding_output_dir)',
37         ],
38       },
39       'export_dependent_settings': [
40         '<(DEPTH)/third_party/mesa/mesa.gyp:mesa_headers',
41       ],
42      'sources': [
43         'android/gl_jni_registrar.cc',
44         'android/gl_jni_registrar.h',
45         'android/scoped_java_surface.cc',
46         'android/scoped_java_surface.h',
47         'android/surface_texture_bridge.cc',
48         'android/surface_texture_bridge.h',
49         'android/surface_texture_listener.cc',
50         'android/surface_texture_listener.h',
51         'gl_bindings.h',
52         'gl_bindings_skia_in_process.cc',
53         'gl_bindings_skia_in_process.h',
54         'gl_context.cc',
55         'gl_context.h',
56         'gl_context_android.cc',
57         'gl_context_mac.mm',
58         'gl_context_ozone.cc',
59         'gl_context_osmesa.cc',
60         'gl_context_osmesa.h',
61         'gl_context_stub.cc',
62         'gl_context_stub.h',
63         'gl_context_win.cc',
64         'gl_context_x11.cc',
65         'gl_export.h',
66         'gl_fence.cc',
67         'gl_fence.h',
68         'gl_gl_api_implementation.cc',
69         'gl_gl_api_implementation.h',
70         'gl_image.cc',
71         'gl_image.h',
72         'gl_image_android.cc',
73         'gl_image_mac.cc',
74         'gl_image_ozone.cc',
75         'gl_image_shm.cc',
76         'gl_image_shm.h',
77         'gl_image_stub.cc',
78         'gl_image_stub.h',
79         'gl_image_win.cc',
80         'gl_image_x11.cc',
81         'gl_implementation.cc',
82         'gl_implementation.h',
83         'gl_implementation_android.cc',
84         'gl_implementation_linux.cc',
85         'gl_implementation_linux.h',
86         'gl_implementation_ozone.cc',
87         'gl_implementation_mac.cc',
88         'gl_implementation_win.cc',
89         'gl_implementation_x11.cc',
90         'gl_interface.cc',
91         'gl_interface.h',
92         'gl_osmesa_api_implementation.cc',
93         'gl_osmesa_api_implementation.h',
94         'gl_share_group.cc',
95         'gl_share_group.h',
96         'gl_state_restorer.cc',
97         'gl_state_restorer.h',
98         'gl_surface.cc',
99         'gl_surface.h',
100         'gl_surface_mac.cc',
101         'gl_surface_stub.cc',
102         'gl_surface_stub.h',
103         'gl_surface_win.cc',
104         'gl_surface_x11.cc',
105         'gl_surface_osmesa.cc',
106         'gl_surface_osmesa.h',
107         'gl_switches.cc',
108         'gl_switches.h',
109         'gpu_switching_manager.cc',
110         'gpu_switching_manager.h',
111         'io_surface_support_mac.cc',
112         'io_surface_support_mac.h',
113         'scoped_binders.cc',
114         'scoped_binders.h',
115         'scoped_make_current.cc',
116         'scoped_make_current.h',
117         'vsync_provider.cc',
118         'vsync_provider.h',
119         '<(gl_binding_output_dir)/gl_bindings_autogen_gl.cc',
120         '<(gl_binding_output_dir)/gl_bindings_autogen_gl.h',
121         '<(gl_binding_output_dir)/gl_bindings_autogen_mock.cc',
122         '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc',
123         '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h',
124         '<(gl_binding_output_dir)/gl_interface_autogen_gl.h',
125       ],
126       # hard_dependency is necessary for this target because it has actions
127       # that generate header files included by dependent targets. The header
128       # files must be generated before the dependents are compiled. The usual
129       # semantics are to allow the two targets to build concurrently.
130       'hard_dependency': 1,
131       'actions': [
132         {
133           'action_name': 'generate_gl_bindings',
134           'variables': {
135             'generator_path': 'generate_bindings.py',
136             'header_paths': '../../third_party/mesa/src/include:../../third_party/khronos',
137           },
138           'inputs': [
139             '<(generator_path)',
140             '<!@(python <(generator_path) --header-paths=<(header_paths) --inputs)',
141           ],
142           'outputs': [
143             '<(gl_binding_output_dir)/gl_bindings_autogen_egl.cc',
144             '<(gl_binding_output_dir)/gl_bindings_autogen_egl.h',
145             '<(gl_binding_output_dir)/gl_bindings_api_autogen_egl.h',
146             '<(gl_binding_output_dir)/gl_bindings_autogen_gl.cc',
147             '<(gl_binding_output_dir)/gl_bindings_autogen_gl.h',
148             '<(gl_binding_output_dir)/gl_bindings_api_autogen_gl.h',
149             '<(gl_binding_output_dir)/gl_bindings_autogen_glx.cc',
150             '<(gl_binding_output_dir)/gl_bindings_autogen_glx.h',
151             '<(gl_binding_output_dir)/gl_bindings_api_autogen_glx.h',
152             '<(gl_binding_output_dir)/gl_bindings_autogen_mock.cc',
153             '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc',
154             '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h',
155             '<(gl_binding_output_dir)/gl_bindings_api_autogen_osmesa.h',
156             '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.cc',
157             '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.h',
158             '<(gl_binding_output_dir)/gl_bindings_api_autogen_wgl.h',
159             '<(gl_binding_output_dir)/gl_interface_autogen_egl.h',
160             '<(gl_binding_output_dir)/gl_interface_autogen_gl.h',
161             '<(gl_binding_output_dir)/gl_interface_autogen_glx.h',
162             '<(gl_binding_output_dir)/gl_interface_autogen_osmesa.h',
163             '<(gl_binding_output_dir)/gl_interface_autogen_wgl.h',
164             '<(gl_binding_output_dir)/gl_mock_autogen_egl.h',
165             '<(gl_binding_output_dir)/gl_mock_autogen_gl.h',
166             '<(gl_binding_output_dir)/gl_mock_autogen_glx.h',
167             '<(gl_binding_output_dir)/gl_mock_autogen_osmesa.h',
168             '<(gl_binding_output_dir)/gl_mock_autogen_wgl.h',
169           ],
170           'action': [
171             'python',
172             '<(generator_path)',
173             '--header-paths=<(header_paths)',
174             '<(gl_binding_output_dir)',
175           ],
176         },
177       ],
178       'conditions': [
179         ['OS in ("win", "android", "linux")', {
180           'sources': [
181             'egl_util.cc',
182             'egl_util.h',
183             'gl_context_egl.cc',
184             'gl_context_egl.h',
185             'gl_surface_egl.cc',
186             'gl_surface_egl.h',
187             'gl_egl_api_implementation.cc',
188             'gl_egl_api_implementation.h',
189             '<(gl_binding_output_dir)/gl_bindings_autogen_egl.cc',
190             '<(gl_binding_output_dir)/gl_bindings_autogen_egl.h',
191           ],
192           'include_dirs': [
193             '<(DEPTH)/third_party/khronos',
194         ],
195         }],
196         ['use_x11 == 1', {
197           'sources': [
198             'gl_context_glx.cc',
199             'gl_context_glx.h',
200             'gl_glx_api_implementation.cc',
201             'gl_glx_api_implementation.h',
202             'gl_image_glx.cc',
203             'gl_image_glx.h',
204             'gl_surface_glx.cc',
205             'gl_surface_glx.h',
206             'gl_egl_api_implementation.cc',
207             'gl_egl_api_implementation.h',
208             '<(gl_binding_output_dir)/gl_bindings_autogen_glx.cc',
209             '<(gl_binding_output_dir)/gl_bindings_autogen_glx.h',
210           ],
211           'all_dependent_settings': {
212             'defines': [
213               'GL_GLEXT_PROTOTYPES',
214             ],
215           },
216           'link_settings': {
217             'libraries': [
218               '-lX11',
219               '-lXcomposite',
220             ],
221           },
222         }],
223         ['OS=="win"', {
224           'sources': [
225             'gl_context_wgl.cc',
226             'gl_context_wgl.h',
227             'gl_egl_api_implementation.cc',
228             'gl_egl_api_implementation.h',
229             'gl_surface_wgl.cc',
230             'gl_surface_wgl.h',
231             'gl_wgl_api_implementation.cc',
232             'gl_wgl_api_implementation.h',
233             '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.cc',
234             '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.h',
235           ],
236         }],
237         ['OS=="mac"', {
238           'sources': [
239             'gl_context_cgl.cc',
240             'gl_context_cgl.h',
241             'gl_surface_cgl.cc',
242             'gl_surface_cgl.h',
243           ],
244           'link_settings': {
245             'libraries': [
246               '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
247             ],
248           },
249         }],
250         ['OS=="mac" and use_aura == 1', {
251           'sources': [
252             'gl_context_nsview.mm',
253             'gl_context_nsview.h',
254             'gl_surface_nsview.mm',
255             'gl_surface_nsview.h',
256           ],
257         }],
258         ['OS=="android"', {
259           'dependencies': [
260             'gl_jni_headers',
261           ],
262           'sources': [
263             'gl_image_egl.cc',
264             'gl_image_egl.h',
265           ],
266           'link_settings': {
267             'libraries': [
268               '-landroid',
269             ],
270           },
271           'sources!': [
272             'gl_context_osmesa.cc',
273             'system_monitor_posix.cc',
274           ],
275           'defines': [
276             'GL_GLEXT_PROTOTYPES',
277             'EGL_EGLEXT_PROTOTYPES',
278           ],
279         }],
280         ['OS!="android"', {
281           'sources/': [ ['exclude', '^android/'] ],
282         }],
283       ],
284     },
285     {
286       'target_name': 'gl_unittest_utils',
287       'type': 'static_library',
288       'variables': {
289         'gl_binding_output_dir': '<(SHARED_INTERMEDIATE_DIR)/ui/gl',
290       },
291       'dependencies': [
292         '../../testing/gmock.gyp:gmock',
293         '../../third_party/khronos/khronos.gyp:khronos_headers',
294         'gl',
295       ],
296       'include_dirs': [
297         '<(gl_binding_output_dir)',
298         '../..',
299       ],
300       'direct_dependent_settings': {
301         'include_dirs': [
302           '<(gl_binding_output_dir)',
303         ],
304       },
305       'sources': [
306         'gl_mock.h',
307         'gl_mock.cc',
308         '<(gl_binding_output_dir)/gl_mock_autogen_gl.h',
309       ],
310     },
311   ],
312   'conditions': [
313     ['OS=="android"' , {
314       'targets': [
315         {
316           'target_name': 'surface_texture_jni_headers',
317           'type': 'none',
318           'variables': {
319             'jni_gen_package': 'ui/gl',
320             'input_java_class': 'android/graphics/SurfaceTexture.class',
321           },
322           'includes': [ '../../build/jar_file_jni_generator.gypi' ],
323         },
324         {
325           'target_name': 'surface_jni_headers',
326           'type': 'none',
327           'variables': {
328             'jni_gen_package': 'ui/gl',
329             'input_java_class': 'android/view/Surface.class',
330           },
331           'includes': [ '../../build/jar_file_jni_generator.gypi' ],
332         },
333         {
334           'target_name': 'gl_jni_headers',
335           'type': 'none',
336           'dependencies': [
337             'surface_texture_jni_headers',
338             'surface_jni_headers',
339           ],
340           'sources': [
341             '../android/java/src/org/chromium/ui/gfx/SurfaceTextureListener.java',
342           ],
343           'variables': {
344             'jni_gen_package': 'ui/gl',
345           },
346           'includes': [ '../../build/jni_generator.gypi' ],
347         },
348       ],
349     }],
350   ],