Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / ui / gl / gl.gyp
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         '<(DEPTH)/third_party/mesa/src/include',
34         '<(gl_binding_output_dir)',
35       ],
36       'direct_dependent_settings': {
37         'include_dirs': [
38           '<(gl_binding_output_dir)',
39         ],
40       },
41       'export_dependent_settings': [
42         '<(DEPTH)/third_party/mesa/mesa.gyp:mesa_headers',
43       ],
44       'sources': [
45         'android/gl_jni_registrar.cc',
46         'android/gl_jni_registrar.h',
47         'android/scoped_java_surface.cc',
48         'android/scoped_java_surface.h',
49         'android/surface_texture.cc',
50         'android/surface_texture.h',
51         'android/surface_texture_listener.cc',
52         'android/surface_texture_listener.h',
53         'android/surface_texture_tracker.cc',
54         'android/surface_texture_tracker.h',
55         'gl_bindings.h',
56         'gl_bindings_skia_in_process.cc',
57         'gl_bindings_skia_in_process.h',
58         'gl_context.cc',
59         'gl_context.h',
60         'gl_context_android.cc',
61         'gl_context_mac.mm',
62         'gl_context_ozone.cc',
63         'gl_context_osmesa.cc',
64         'gl_context_osmesa.h',
65         'gl_context_stub.cc',
66         'gl_context_stub.h',
67         'gl_context_stub_with_extensions.cc',
68         'gl_context_stub_with_extensions.h',
69         'gl_context_win.cc',
70         'gl_context_x11.cc',
71         'gl_export.h',
72         'gl_fence.cc',
73         'gl_fence.h',
74         'gl_fence_arb.cc',
75         'gl_fence_arb.h',
76         'gl_fence_nv.cc',
77         'gl_fence_nv.h',
78         'gl_gl_api_implementation.cc',
79         'gl_gl_api_implementation.h',
80         'gl_image.cc',
81         'gl_image.h',
82         'gl_image_memory.cc',
83         'gl_image_memory.h',
84         'gl_image_ref_counted_memory.cc',
85         'gl_image_ref_counted_memory.h',
86         'gl_image_shared_memory.cc',
87         'gl_image_shared_memory.h',
88         'gl_image_stub.cc',
89         'gl_image_stub.h',
90         'gl_implementation.cc',
91         'gl_implementation.h',
92         'gl_implementation_android.cc',
93         'gl_implementation_ozone.cc',
94         'gl_implementation_mac.cc',
95         'gl_implementation_win.cc',
96         'gl_implementation_x11.cc',
97         'gl_osmesa_api_implementation.cc',
98         'gl_osmesa_api_implementation.h',
99         'gl_share_group.cc',
100         'gl_share_group.h',
101         'gl_state_restorer.cc',
102         'gl_state_restorer.h',
103         'gl_surface.cc',
104         'gl_surface.h',
105         'gl_surface_android.cc',
106         'gl_surface_mac.cc',
107         'gl_surface_stub.cc',
108         'gl_surface_stub.h',
109         'gl_surface_win.cc',
110         'gl_surface_x11.cc',
111         'gl_surface_osmesa.cc',
112         'gl_surface_osmesa.h',
113         'gl_surface_ozone.cc',
114         'gl_switches.cc',
115         'gl_switches.h',
116         'gl_version_info.cc',
117         'gl_version_info.h',
118         'gpu_switching_manager.cc',
119         'gpu_switching_manager.h',
120         'scoped_binders.cc',
121         'scoped_binders.h',
122         'scoped_make_current.cc',
123         'scoped_make_current.h',
124         'sync_control_vsync_provider.cc',
125         'sync_control_vsync_provider.h',
126         '<(gl_binding_output_dir)/gl_bindings_autogen_gl.cc',
127         '<(gl_binding_output_dir)/gl_bindings_autogen_gl.h',
128         '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc',
129         '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h',
130       ],
131       # hard_dependency is necessary for this target because it has actions
132       # that generate header files included by dependent targets. The header
133       # files must be generated before the dependents are compiled. The usual
134       # semantics are to allow the two targets to build concurrently.
135       'hard_dependency': 1,
136       'actions': [
137         {
138           'action_name': 'generate_gl_bindings',
139           'variables': {
140             'generator_path': 'generate_bindings.py',
141             # Prefer khronos EGL/GLES headers by listing that path first.
142             'header_paths': '../../third_party/khronos:../../third_party/mesa/src/include:.:../../gpu',
143           },
144           'inputs': [
145             '<(generator_path)',
146             '<!@(python <(generator_path) --header-paths=<(header_paths) --inputs)',
147           ],
148           'outputs': [
149             '<(gl_binding_output_dir)/gl_bindings_autogen_egl.cc',
150             '<(gl_binding_output_dir)/gl_bindings_autogen_egl.h',
151             '<(gl_binding_output_dir)/gl_bindings_api_autogen_egl.h',
152             '<(gl_binding_output_dir)/gl_bindings_autogen_gl.cc',
153             '<(gl_binding_output_dir)/gl_bindings_autogen_gl.h',
154             '<(gl_binding_output_dir)/gl_bindings_api_autogen_gl.h',
155             '<(gl_binding_output_dir)/gl_bindings_autogen_glx.cc',
156             '<(gl_binding_output_dir)/gl_bindings_autogen_glx.h',
157             '<(gl_binding_output_dir)/gl_bindings_api_autogen_glx.h',
158             '<(gl_binding_output_dir)/gl_bindings_autogen_mock.cc',
159             '<(gl_binding_output_dir)/gl_bindings_autogen_mock.h',
160             '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc',
161             '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h',
162             '<(gl_binding_output_dir)/gl_bindings_api_autogen_osmesa.h',
163             '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.cc',
164             '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.h',
165             '<(gl_binding_output_dir)/gl_bindings_api_autogen_wgl.h',
166             '<(gl_binding_output_dir)/gl_mock_autogen_gl.h',
167           ],
168           'action': [
169             'python',
170             '<(generator_path)',
171             '--header-paths=<(header_paths)',
172             '<(gl_binding_output_dir)',
173           ],
174         },
175       ],
176       'conditions': [
177         ['OS in ("win", "android", "linux")', {
178           'sources': [
179             'egl_util.cc',
180             'egl_util.h',
181             'gl_context_egl.cc',
182             'gl_context_egl.h',
183             'gl_fence_egl.cc',
184             'gl_fence_egl.h',
185             'gl_image_egl.cc',
186             'gl_image_egl.h',
187             'gl_surface_egl.cc',
188             'gl_surface_egl.h',
189             'gl_egl_api_implementation.cc',
190             'gl_egl_api_implementation.h',
191             '<(gl_binding_output_dir)/gl_bindings_autogen_egl.cc',
192             '<(gl_binding_output_dir)/gl_bindings_autogen_egl.h',
193           ],
194           'include_dirs': [
195             '<(DEPTH)/third_party/khronos',
196         ],
197         }],
198         ['OS in ("android", "linux")', {
199           'sources': [
200             'gl_implementation_osmesa.cc',
201             'gl_implementation_osmesa.h',
202           ],
203         }],
204         ['use_x11 == 1', {
205           'sources': [
206             'gl_context_glx.cc',
207             'gl_context_glx.h',
208             'gl_glx_api_implementation.cc',
209             'gl_glx_api_implementation.h',
210             'gl_image_glx.cc',
211             'gl_image_glx.h',
212             'gl_surface_glx.cc',
213             'gl_surface_glx.h',
214             'gl_egl_api_implementation.cc',
215             'gl_egl_api_implementation.h',
216             '<(gl_binding_output_dir)/gl_bindings_autogen_glx.cc',
217             '<(gl_binding_output_dir)/gl_bindings_autogen_glx.h',
218           ],
219           'all_dependent_settings': {
220             'defines': [
221               'GL_GLEXT_PROTOTYPES',
222             ],
223           },
224           'dependencies': [
225             '<(DEPTH)/build/linux/system.gyp:x11',
226             '<(DEPTH)/build/linux/system.gyp:xcomposite',
227             '<(DEPTH)/build/linux/system.gyp:xext',
228             '<(DEPTH)/ui/events/platform/events_platform.gyp:events_platform',
229             '<(DEPTH)/ui/gfx/x/gfx_x11.gyp:gfx_x11',
230           ],
231         }],
232         ['OS=="win"', {
233           'sources': [
234             'gl_context_wgl.cc',
235             'gl_context_wgl.h',
236             'gl_egl_api_implementation.cc',
237             'gl_egl_api_implementation.h',
238             'gl_surface_wgl.cc',
239             'gl_surface_wgl.h',
240             'gl_wgl_api_implementation.cc',
241             'gl_wgl_api_implementation.h',
242             '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.cc',
243             '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.h',
244           ],
245           'msvs_settings': {
246             'VCLinkerTool': {
247               'DelayLoadDLLs': [
248                 'dwmapi.dll',
249               ],
250               'AdditionalDependencies': [
251                 'dwmapi.lib',
252               ],
253             },
254           },
255           'link_settings': {
256             'libraries': [
257               '-ldwmapi.lib',
258             ],
259           },
260         }],
261         ['OS=="mac"', {
262           'sources': [
263             'gl_context_cgl.cc',
264             'gl_context_cgl.h',
265             'gl_image_io_surface.cc',
266             'gl_image_io_surface.h',
267             'scoped_cgl.cc',
268             'scoped_cgl.h',
269           ],
270           'link_settings': {
271             'libraries': [
272               '$(SDKROOT)/System/Library/Frameworks/IOSurface.framework',
273               '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
274             ],
275           },
276         }],
277         ['OS=="android"', {
278           'dependencies': [
279             'gl_jni_headers',
280           ],
281           'sources': [
282             'gl_image_android_native_buffer.cc',
283             'gl_image_android_native_buffer.h',
284             'gl_image_surface_texture.cc',
285             'gl_image_surface_texture.h',
286           ],
287           'link_settings': {
288             'libraries': [
289               '-landroid',
290             ],
291           },
292           'sources!': [
293             'system_monitor_posix.cc',
294           ],
295           'defines': [
296             'GL_GLEXT_PROTOTYPES',
297             'EGL_EGLEXT_PROTOTYPES',
298           ],
299         }],
300         ['OS!="android"', {
301           'sources/': [ ['exclude', '^android/'] ],
302         }],
303         ['use_ozone==1', {
304           'dependencies': [
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 }