Re-subimission of https://codereview.chromium.org/1041213003/
[chromium-blink-merge.git] / third_party / mesa / mesa_gensrc.gypi
blobf35c23e0031aac7d6c123d8324dc2888bf0a8543
1 # Copyright (c) 2013 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     'xmlfiles': [
8       'src/src/mapi/glapi/gen/EXT_draw_buffers2.xml',
9       'src/src/mapi/glapi/gen/NV_texture_barrier.xml',
10       'src/src/mapi/glapi/gen/NV_primitive_restart.xml',
11       'src/src/mapi/glapi/gen/ARB_base_instance.xml',
12       'src/src/mapi/glapi/gen/EXT_packed_depth_stencil.xml',
13       'src/src/mapi/glapi/gen/ARB_sync.xml',
14       'src/src/mapi/glapi/gen/ARB_draw_buffers.xml',
15       'src/src/mapi/glapi/gen/ARB_geometry_shader4.xml',
16       'src/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml',
17       'src/src/mapi/glapi/gen/GL3x.xml',
18       'src/src/mapi/glapi/gen/ARB_blend_func_extended.xml',
19       'src/src/mapi/glapi/gen/EXT_gpu_shader4.xml',
20       'src/src/mapi/glapi/gen/ARB_robustness.xml',
21       'src/src/mapi/glapi/gen/ARB_ES2_compatibility.xml',
22       'src/src/mapi/glapi/gen/ARB_map_buffer_range.xml',
23       'src/src/mapi/glapi/gen/OES_single_precision.xml',
24       'src/src/mapi/glapi/gen/ARB_debug_output.xml',
25       'src/src/mapi/glapi/gen/ARB_draw_instanced.xml',
26       'src/src/mapi/glapi/gen/ARB_copy_buffer.xml',
27       'src/src/mapi/glapi/gen/glX_API.xml',
28       'src/src/mapi/glapi/gen/ARB_framebuffer_object.xml',
29       'src/src/mapi/glapi/gen/OES_EGL_image.xml',
30       'src/src/mapi/glapi/gen/gl_and_es_API.xml',
31       'src/src/mapi/glapi/gen/ARB_color_buffer_float.xml',
32       'src/src/mapi/glapi/gen/ARB_instanced_arrays.xml',
33       'src/src/mapi/glapi/gen/APPLE_object_purgeable.xml',
34       'src/src/mapi/glapi/gen/APPLE_vertex_array_object.xml',
35       'src/src/mapi/glapi/gen/ARB_texture_rgb10_a2ui.xml',
36       'src/src/mapi/glapi/gen/ARB_sampler_objects.xml',
37       'src/src/mapi/glapi/gen/OES_fixed_point.xml',
38       'src/src/mapi/glapi/gen/EXT_provoking_vertex.xml',
39       'src/src/mapi/glapi/gen/ARB_texture_float.xml',
40       'src/src/mapi/glapi/gen/EXT_texture_integer.xml',
41       'src/src/mapi/glapi/gen/es_EXT.xml',
42       'src/src/mapi/glapi/gen/gl_and_glX_API.xml',
43       'src/src/mapi/glapi/gen/EXT_transform_feedback.xml',
44       'src/src/mapi/glapi/gen/ARB_texture_buffer_object.xml',
45       'src/src/mapi/glapi/gen/EXT_framebuffer_object.xml',
46       'src/src/mapi/glapi/gen/ARB_uniform_buffer_object.xml',
47       'src/src/mapi/glapi/gen/ARB_texture_rg.xml',
48       'src/src/mapi/glapi/gen/ARB_vertex_type_2_10_10_10_rev.xml',
49       'src/src/mapi/glapi/gen/ARB_seamless_cube_map.xml',
50       'src/src/mapi/glapi/gen/EXT_texture_array.xml',
51       'src/src/mapi/glapi/gen/ARB_vertex_array_object.xml',
52       'src/src/mapi/glapi/gen/ARB_invalidate_subdata.xml',
53       'src/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml',
54       'src/src/mapi/glapi/gen/AMD_draw_buffers_blend.xml',
55       'src/src/mapi/glapi/gen/ARB_get_program_binary.xml',
56       'src/src/mapi/glapi/gen/gl_API.xml',
57       'src/src/mapi/glapi/gen/ARB_depth_clamp.xml',
58       'src/src/mapi/glapi/gen/ARB_texture_storage.xml',
59       'src/src/mapi/glapi/gen/ARB_depth_buffer_float.xml',
60       'src/src/mapi/glapi/gen/EXT_separate_shader_objects.xml',
61       'src/src/mapi/glapi/gen/ARB_texture_compression_rgtc.xml',
62       'src/src/mapi/glapi/gen/NV_conditional_render.xml',
63       'src/src/mesa/main/APIspec.xml',
64     ],
65   },
67   'targets': [
68     # The targets below generate all of the sources Mesa generates
69     # during its build process. Mesa's XML processors like gl_XML.py
70     # rely heavily on Python's libxml2 bindings. Specifically, the
71     # processors require validation against the DTD for default values
72     # for attributes, and none of Python's built-in XML parsers support
73     # validation. It's infeasible to use any third-party XML parser for
74     # Python which relies on native code due to the large number of
75     # host platforms Chromium must build on, and pure Python validators
76     # are in short supply.
78     # The main target is generate_mesa_sources, which must be run
79     # manually on a host platform with libxml2's Python bindings
80     # installed. (Most Linux distributions should fulfill this
81     # requirement.)
82     {
83       'target_name': 'mesa_builtin_compiler',
84       'type': 'executable',
85       'include_dirs': [
86         'src/src/gallium/auxiliary',
87         'src/src/gallium/include',
88         'src/src/glsl',
89         'src/src/glsl/glcpp',
90         'src/src/mapi',
91         'src/src/mapi/glapi',
92         'src/src/mesa',
93         'src/src/mesa/main',
94         '<(generated_src_dir)/mesa/',
95         '<(generated_src_dir)/mesa/main',
96         '<(generated_src_dir)/mesa/program',
97         '<(generated_src_dir)/mesa/glapi',
98       ],
99       'dependencies': [
100         'generate_main_mesa_sources',
101         'mesa_headers',
102         'mesa_libglslcommon', # implicit dependency on generate_main_mesa_sources
103       ],
104       'variables': {
105         'clang_warning_flags': [
106           '-Wno-tautological-constant-out-of-range-compare',
107         ],
108         'clang_warning_flags_unset': [
109           # Don't warn about string->bool used in asserts.
110           '-Wstring-conversion',
111         ],
112       },
113       'sources': [
114         'src/src/mesa/program/hash_table.c',
115         'src/src/mesa/program/symbol_table.c',
116         'src/src/glsl/standalone_scaffolding.cpp',
117         'src/src/glsl/main.cpp',
118         'src/src/glsl/builtin_stubs.cpp',
119       ],
120     },
121     {
122       'target_name': 'generate_mesa_sources',
123       'type': 'none',
124       'dependencies': [
125         'mesa_builtin_compiler',
126       ],
127       'actions': [
128         {
129           'action_name': 'generateBuiltins',
130           'inputs': [
131             '<(PRODUCT_DIR)/mesa_builtin_compiler',
132             'src/src/glsl/builtins/tools/generate_builtins.py'
133           ],
134           'outputs': [
135             '<(generated_src_dir)/mesa/builtin_function.cpp',
136           ],
137           'action': [
138             'python',
139             'redirectoutput.py',
140             '<(generated_src_dir)/mesa/builtin_function.cpp',
141             'src/src/glsl/builtins/tools/generate_builtins.py',
142             '<(PRODUCT_DIR)/mesa_builtin_compiler',
143           ],
144           'message': "Generating Mesa builtins ...",
145         }
146       ],
147     },
148     {
149       'target_name': 'generate_main_mesa_sources',
150       'type': 'none',
151       'actions': [
152         {
153           'action_name': 'glsl_parser_cc',
154           'inputs': [
155             'src/src/glsl/glsl_parser.yy',
156           ],
157           'outputs': [
158             '<(generated_src_dir)/mesa/glsl_parser.cc',
159             '<(generated_src_dir)/mesa/glsl_parser.h',
160           ],
161           'action': [
162             'bison',
163             '-y',
164             '-v',
165             '-o',
166             '<(generated_src_dir)/mesa/glsl_parser.cc',
167             '-p',
168             '_mesa_glsl_',
169             '--defines=<(generated_src_dir)/mesa/glsl_parser.h',
170             'src/src/glsl/glsl_parser.yy'
171           ],
172           'message': "Generating glsl parser ...",
173         },
174         {
175           'action_name': 'lex_yy_c',
176           'inputs': [
177             'src/src/mesa/program/program_lexer.l',
178           ],
179           'outputs': [
180             '<(generated_src_dir)/mesa/lex.yy.c',
181           ],
182           'action': [
183             'flex',
184             '--never-interactive',
185             '--outfile=<(generated_src_dir)/mesa/lex.yy.c',
186             'src/src/mesa/program/program_lexer.l'
187           ],
188           'message': "Generating lex.yy.c ...",
189         },
190         {
191           'action_name': 'glsl_lexer_cc',
192           'inputs': [
193             'src/src/glsl/glsl_lexer.ll',
194           ],
195           'outputs': [
196             '<(generated_src_dir)/mesa/glsl_lexer.cc',
197           ],
198           'action': [
199             'flex',
200             '--nounistd',
201             '--outfile=<(generated_src_dir)/mesa/glsl_lexer.cc',
202             'src/src/glsl/glsl_lexer.ll',
203           ],
204           'message': "Generating glsl lexer ...",
205         },
206         {
207           'action_name': 'glcpp_lex_c',
208           'inputs': [
209             'src/src/glsl/glcpp/glcpp-lex.l',
210           ],
211           'outputs': [
212             '<(generated_src_dir)/mesa/glcpp-lex.c',
213           ],
214           'action': [
215             'flex',
216             '--nounistd',
217             '--outfile=<(generated_src_dir)/mesa/glcpp-lex.c',
218             'src/src/glsl/glcpp/glcpp-lex.l',
219           ],
220           'message': "Generating glcpp-lex.c ...",
221         },
222         {
223           'action_name': 'glcpp_parse_c',
224           'inputs': [
225             'src/src/glsl/glcpp/glcpp-parse.y',
226           ],
227           'outputs': [
228             '<(generated_src_dir)/mesa/glcpp-parse.c',
229             '<(generated_src_dir)/mesa/glcpp-parse.h',
230           ],
231           'action': [
232             'bison',
233             '-y',
234             '-v',
235             '-d',
236             '-p',
237             'glcpp_parser_',
238             '-o',
239             '<(generated_src_dir)/mesa/glcpp-parse.c',
240             '--defines=<(generated_src_dir)/mesa/glcpp-parse.h',
241             'src/src/glsl/glcpp/glcpp-parse.y',
242           ],
243           'message': "Generating glcpp parser ...",
244         },
245         {
246           'action_name': 'program_parse_tab_c',
247           'inputs': [
248             'src/src/mesa/program/program_parse.y',
249           ],
250           'outputs': [
251             '<(generated_src_dir)/mesa/program/program_parse.tab.c',
252           ],
253           'action': [
254             'bison',
255             '-y',
256             '-v',
257             '-d',
258             '-p',
259             '_mesa_program_',
260             '--output=<(generated_src_dir)/mesa/program/program_parse.tab.c',
261             'src/src/mesa/program/program_parse.y',
262           ],
263           'message': "Generating program_parse.y ...",
264         },
265         {
266           'action_name': 'glapi_mapi_tmp_h',
267           'inputs': [
268             '<@(xmlfiles)',
269             'redirectoutput.py',
270             'src/src/mapi/mapi/mapi_abi.py',
271           ],
272           'outputs': [
273             '<(generated_src_dir)/mesa/glapi_mapi_tmp.h',
274           ],
275           'action': [
276             'python',
277             'redirectoutput.py',
278             '<(generated_src_dir)/mesa/glapi_mapi_tmp.h',
279             'src/src/mapi/mapi/mapi_abi.py',
280             '--printer',
281             'glapi',
282             '--mode',
283             'lib',
284             'src/src/mapi/glapi/gen/gl_and_es_API.xml',
285           ],
286           'message': "Generating glapi_mapi_tmp.h ...",
287         },
288         {
289           'action_name': 'glapi_mapi_tmp_shared_h',
290           'inputs': [
291             '<@(xmlfiles)',
292             'redirectoutput.py',
293             'src/src/mapi/mapi/mapi_abi.py',
294           ],
295           'outputs': [
296             '<(generated_src_dir)/mesa/glapi_mapi_tmp_shared.h',
297           ],
298           'action': [
299             'python',
300             'redirectoutput.py',
301             '<(generated_src_dir)/mesa/glapi_mapi_tmp_shared.h',
302             'src/src/mapi/mapi/mapi_abi.py',
303             '--printer',
304             'shared-glapi',
305             '--mode',
306             'lib',
307             'src/src/mapi/glapi/gen/gl_and_es_API.xml',
308           ],
309           'message': "Generating glapi_mapi_tmp_shared.h ...",
310         },
311         {
312           'action_name': 'glprocs_h',
313           'inputs': [
314             '<@(xmlfiles)',
315             'redirectoutput.py',
316             'src/src/mapi/glapi/gen/gl_procs.py',
317           ],
318           'outputs': [
319             '<(generated_src_dir)/mesa/glprocs.h',
320           ],
321           'action': [
322             'python',
323             'redirectoutput.py',
324             '<(generated_src_dir)/mesa/glprocs.h',
325             'src/src/mapi/glapi/gen/gl_procs.py',
326             '-f',
327             'src/src/mapi/glapi/gen/gl_API.xml',
328           ],
329           'message': "Generating glprocs.h ...",
330         },
331         {
332           'action_name': 'glapitemp_h',
333           'inputs': [
334             '<@(xmlfiles)',
335             'redirectoutput.py',
336             'src/src/mapi/glapi/gen/gl_apitemp.py',
337           ],
338           'outputs': [
339             '<(generated_src_dir)/mesa/glapi/glapitemp.h',
340           ],
341           'action': [
342             'python',
343             'redirectoutput.py',
344             '<(generated_src_dir)/mesa/glapi/glapitemp.h',
345             'src/src/mapi/glapi/gen/gl_apitemp.py',
346             '-f',
347             'src/src/mapi/glapi/gen/gl_API.xml',
348           ],
349           'message': "Generating glapitemp.h ...",
350         },
351         {
352           'action_name': 'glapitable_h',
353           'inputs': [
354             '<@(xmlfiles)',
355             'redirectoutput.py',
356             'src/src/mapi/glapi/gen/gl_table.py',
357           ],
358           'outputs': [
359             '<(generated_src_dir)/mesa/glapi/glapitable.h',
360           ],
361           'action': [
362             'python',
363             'redirectoutput.py',
364             '<(generated_src_dir)/mesa/glapi/glapitable.h',
365             'src/src/mapi/glapi/gen/gl_table.py',
366             '-f',
367             'src/src/mapi/glapi/gen/gl_API.xml',
368           ],
369           'message': "Generating glapitable.h ...",
370         },
371         {
372           'action_name': 'glapi_gentable_c',
373           'inputs': [
374             '<@(xmlfiles)',
375             'redirectoutput.py',
376             'src/src/mapi/glapi/gen/gl_gentable.py',
377           ],
378           'outputs': [
379             '<(generated_src_dir)/mesa/glapi_gentable.c',
380           ],
381           'action': [
382             'python',
383             'redirectoutput.py',
384             '<(generated_src_dir)/mesa/glapi_gentable.c',
385             'src/src/mapi/glapi/gen/gl_gentable.py',
386             '-f',
387             'src/src/mapi/glapi/gen/gl_API.xml',
388           ],
389           'message': "Generating glapi_gentable.c ...",
390         },
391         {
392           'action_name': 'glapi_x86_64_S',
393           'inputs': [
394             '<@(xmlfiles)',
395             'redirectoutput.py',
396             'src/src/mapi/glapi/gen/gl_x86-64_asm.py',
397           ],
398           'outputs': [
399             '<(generated_src_dir)/mesa/glapi_x86-64.S',
400           ],
401           'action': [
402             'python',
403             'redirectoutput.py',
404             '<(generated_src_dir)/mesa/glapi_x86-64.S',
405             'src/src/mapi/glapi/gen/gl_x86-64_asm.py',
406             '-f',
407             'src/src/mapi/glapi/gen/gl_API.xml',
408           ],
409           'message': "Generating glapi_x86-64.S ...",
410         },
411         {
412           'action_name': 'enums_c',
413           'inputs': [
414             '<@(xmlfiles)',
415             'redirectoutput.py',
416             'src/src/mapi/glapi/gen/gl_enums.py',
417           ],
418           'outputs': [
419             '<(generated_src_dir)/mesa/enums.c',
420           ],
421           'action': [
422             'python',
423             'redirectoutput.py',
424             '<(generated_src_dir)/mesa/enums.c',
425             'src/src/mapi/glapi/gen/gl_enums.py',
426             '-f',
427             'src/src/mapi/glapi/gen/gl_and_es_API.xml',
428           ],
429           'message': "Generating enums.c ...",
430         },
431         {
432           'action_name': 'dispatch_h',
433           'inputs': [
434             '<@(xmlfiles)',
435             'redirectoutput.py',
436             'src/src/mapi/glapi/gen/gl_table.py',
437           ],
438           'outputs': [
439             '<(generated_src_dir)/mesa/main/dispatch.h',
440           ],
441           'action': [
442             'python',
443             'redirectoutput.py',
444             '<(generated_src_dir)/mesa/main/dispatch.h',
445             'src/src/mapi/glapi/gen/gl_table.py',
446             '-f',
447             'src/src/mapi/glapi/gen/gl_API.xml',
448             '-m',
449             'remap_table',
450           ],
451           'message': "Generating dispatch.h ...",
452         },
453         {
454           'action_name': 'remap_helper_h',
455           'inputs': [
456             '<@(xmlfiles)',
457             'redirectoutput.py',
458             'src/src/mapi/glapi/gen/remap_helper.py',
459           ],
460           'outputs': [
461             '<(generated_src_dir)/mesa/main/remap_helper.h',
462           ],
463           'action': [
464             'python',
465             'redirectoutput.py',
466             '<(generated_src_dir)/mesa/main/remap_helper.h',
467             'src/src/mapi/glapi/gen/remap_helper.py',
468             '-f',
469             'src/src/mapi/glapi/gen/gl_API.xml',
470           ],
471           'message': "Generating remap_helper.h ...",
472         },
473         {
474           'action_name': 'indirect_c',
475           'inputs': [
476             '<@(xmlfiles)',
477             'src/src/mapi/glapi/gen/glX_proto_send.py',
478             'redirectoutput.py',
479           ],
480           'outputs': [
481             '<(generated_src_dir)/mesa/indirect.c',
482           ],
483           'action': [
484             'python',
485             'redirectoutput.py',
486             '<(generated_src_dir)/mesa/indirect.c',
487             'src/src/mapi/glapi/gen/glX_proto_send.py',
488             '-f',
489             'src/src/mapi/glapi/gen/gl_API.xml',
490             '-m',
491             'proto',
492           ],
493           'message': "Generating indirect.c ...",
494         },
495         {
496           'action_name': 'indirect_h',
497           'inputs': [
498             '<@(xmlfiles)',
499             'redirectoutput.py',
500             'src/src/mapi/glapi/gen/glX_proto_send.py',
501           ],
502           'outputs': [
503             '<(generated_src_dir)/mesa/indirect.h',
504           ],
505           'action': [
506             'python',
507             'redirectoutput.py',
508             '<(generated_src_dir)/mesa/indirect.h',
509             'src/src/mapi/glapi/gen/glX_proto_send.py',
510             '-f',
511             'src/src/mapi/glapi/gen/gl_API.xml',
512             '-m',
513             'init_h',
514           ],
515           'message': "Generating indirect.h ...",
516         },
517         {
518           'action_name': 'indirect_init_c',
519           'inputs': [
520             '<@(xmlfiles)',
521             'redirectoutput.py',
522             'src/src/mapi/glapi/gen/glX_proto_send.py',
523           ],
524           'outputs': [
525             '<(generated_src_dir)/mesa/indirect_init.c',
526           ],
527           'action': [
528             'python',
529             'redirectoutput.py',
530             '<(generated_src_dir)/mesa/indirect_init.c',
531             'src/src/mapi/glapi/gen/glX_proto_send.py',
532             '-f',
533             'src/src/mapi/glapi/gen/gl_API.xml',
534             '-m',
535             'init_c',
536           ],
537           'message': "Generating indirect_init.c ...",
538         },
539         {
540           'action_name': 'indirect_size_h',
541           'inputs': [
542             '<@(xmlfiles)',
543             'redirectoutput.py',
544             'src/src/mapi/glapi/gen/glX_proto_size.py',
545           ],
546           'outputs': [
547             '<(generated_src_dir)/mesa/indirect_size.h',
548           ],
549           'action': [
550             'python',
551             'redirectoutput.py',
552             '<(generated_src_dir)/mesa/indirect_size.h',
553             'src/src/mapi/glapi/gen/glX_proto_size.py',
554             '-f',
555             'src/src/mapi/glapi/gen/gl_API.xml',
556             '-m',
557             'size_h',
558             '--only-set',
559             '-h',
560             '_INDIRECT_SIZE_H_',
561           ],
562           'message': "Generating indirect_size.h ...",
563         },
564         {
565           'action_name': 'indirect_size_c',
566           'inputs': [
567             '<@(xmlfiles)',
568             'redirectoutput.py',
569             'src/src/mapi/glapi/gen/glX_proto_size.py',
570           ],
571           'outputs': [
572             '<(generated_src_dir)/mesa/indirect_size.c',
573           ],
574           'action': [
575             'python',
576             'redirectoutput.py',
577             '<(generated_src_dir)/mesa/indirect_size.c',
578             'src/src/mapi/glapi/gen/glX_proto_size.py',
579             '-f',
580             'src/src/mapi/glapi/gen/gl_API.xml',
581             '-m',
582             'size_c',
583             '--only-set',
584           ],
585           'message': "Generating indirect_size.c ...",
586         },
587         {
588           'action_name': 'git_sha1_h',
589           'inputs': [
590           ],
591           'outputs': [
592             '<(generated_src_dir)/mesa/git_sha1.h',
593           ],
594           'action': [
595             'python',
596             'generate_git_sha1.py',
597             '<(generated_src_dir)/mesa/git_sha1.h',
598           ],
599           'message': "Generating Mesa sources ...",
600         },
601       ],
602     },
603   ],