1# Copyright 2014 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
5import("//build/config/ui.gni")
6
7config("mesa_headers_config") {
8  include_dirs = [ "src/include" ]
9  if (use_x11) {
10    defines = [ "MESA_EGL_NO_X11_HEADERS" ]
11  }
12}
13
14# This directory contains checked-in files generated from the Mesa build.
15generated_src_dir = "src/chromium_gensrc"
16
17source_set("mesa_headers") {
18  public_configs = [ ":mesa_headers_config" ]
19}
20
21# This config must generally be prepended to the configs list so that the Mesa
22# dirs appear before the system ones on Windows. This is necessary so that
23# #include "GL/gl.h" means to include Mesa's, not the system's.
24config("mesa_internal_config") {
25  cflags = []
26  defines = [
27    "MAPI_ABI_HEADER=\"glapi_mapi_tmp_shared.h\"",
28    "PACKAGE_NAME=\"Mesa\"",
29    "PACKAGE_TARNAME=\"mesa\"",
30    "PACKAGE_VERSION=\"9.0.3\"",
31    "PACKAGE_STRING=\"Mesa\ 9.0.3\"",
32    "PACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi\?product=Mesa\"",
33    "PACKAGE_URL=\"\"",
34    "PACKAGE=\"mesa\"",
35    "VERSION=\"9.0.3\"",
36    "STDC_HEADERS=1",
37    "HAVE_SYS_TYPES_H=1",
38    "HAVE_SYS_STAT_H=1",
39    "HAVE_STDLIB_H=1",
40    "HAVE_STRING_H=1",
41    "HAVE_MEMORY_H=1",
42    "HAVE_STRINGS_H=1",
43    "HAVE_INTTYPES_H=1",
44    "HAVE_STDINT_H=1",
45    "HAVE_DLFCN_H=1",
46    "LT_OBJDIR=\".libs/\"",
47    "YYTEXT_POINTER=1",
48    "HAVE_LIBEXPAT=1",
49    "HAVE_LIBXCB_DRI2=1",
50    "FEATURE_GL=1",
51    "MAPI_MODE_GLAPI",
52    #"USE_X86_64_ASM",
53    "IN_DRI_DRIVER",
54    "USE_XCB",
55    "GLX_INDIRECT_RENDERING",
56    "GLX_DIRECT_RENDERING",
57    "USE_EXTERNAL_DXTN_LIB=1",
58    "IN_DRI_DRIVER",
59    "HAVE_ALIAS",
60    "HAVE_MINCORE",
61    "HAVE_LIBUDEV",
62    "_GLAPI_NO_EXPORTS",
63  ]
64  include_dirs = [
65    "src/src/gallium/auxiliary",
66    "src/src/gallium/include",
67    "src/src/glsl",
68    "src/src/glsl/glcpp",
69    "src/src/mapi",
70    "src/src/mapi/glapi",
71    "src/src/mesa",
72    "src/src/mesa/main",
73    "src/include",
74    "$generated_src_dir/mesa/",
75    "$generated_src_dir/mesa/main",
76    "$generated_src_dir/mesa/program",
77    "$generated_src_dir/mesa/glapi",
78  ]
79
80  if (is_clang) {
81    cflags += [ "-Wno-tautological-constant-out-of-range-compare" ]
82  }
83
84  if (is_android) {
85    defines += [
86      "__GLIBC__",
87      "_GNU_SOURCE",
88    ]
89  }
90
91  if (is_linux) {
92    defines += [
93      "_GNU_SOURCE",
94    ]
95  }
96
97  if (is_posix) {
98    defines += [
99      "HAVE_DLOPEN",
100      "HAVE_PTHREAD=1",
101      "HAVE_UNISTD_H=1",
102    ]
103
104    if (!is_android) {
105      defines += [ "HAVE_POSIX_MEMALIGN" ]
106    }
107
108    if (!is_android && !is_mac) {
109      cflags += [ "-fPIC" ]
110    }
111  }
112
113  if (is_win) {
114    # TODO(scottmg): http://crbug.com/143877 These should be removed if
115    # Mesa is ever rolled and the warnings are fixed.
116    cflags = [
117      "/wd4005",  # Macro defined twice.
118      "/wd4065",  # Switch statement contains 'default' but no 'case' labels.
119      "/wd4090",  # 'Operation' : different 'modifier' qualifiers
120      "/wd4099",  # Type name struct-vs-class doesn't match.
121      "/wd4267",  # size_t to type.
122      "/wd4273",  # Inconsistent DLL linkage.
123      "/wd4291",  # No matching operator delete found for placement new.
124      "/wd4305",  # Truncation from int to float.
125      "/wd4334",  # Result of 32-bit shift implicitly converted to 64 bits.
126      "/wd4345",  # POD-type default initializers.
127    ]
128  }
129}
130
131static_library("mesa_libglslcommon") {
132  sources = [
133    "$generated_src_dir/mesa/glcpp-lex.c",
134    "$generated_src_dir/mesa/glcpp-parse.c",
135    "$generated_src_dir/mesa/glcpp-parse.h",
136    "$generated_src_dir/mesa/glsl_lexer.cc",
137    "$generated_src_dir/mesa/glsl_parser.cc",
138    "$generated_src_dir/mesa/main/dispatch.h",
139    "src/src/glsl/ast_expr.cpp",
140    "src/src/glsl/ast_function.cpp",
141    "src/src/glsl/ast_to_hir.cpp",
142    "src/src/glsl/ast_type.cpp",
143    "src/src/glsl/builtin_variables.cpp",
144    "src/src/glsl/glcpp/glcpp.h",
145    "src/src/glsl/glcpp/pp.c",
146    "src/src/glsl/glsl_parser_extras.cpp",
147    "src/src/glsl/glsl_parser_extras.h",
148    "src/src/glsl/glsl_symbol_table.cpp",
149    "src/src/glsl/glsl_symbol_table.h",
150    "src/src/glsl/glsl_types.cpp",
151    "src/src/glsl/glsl_types.h",
152    "src/src/glsl/hir_field_selection.cpp",
153    "src/src/glsl/ir_basic_block.cpp",
154    "src/src/glsl/ir_basic_block.h",
155    "src/src/glsl/ir_builder.cpp",
156    "src/src/glsl/ir_builder.h",
157    "src/src/glsl/ir_clone.cpp",
158    "src/src/glsl/ir_constant_expression.cpp",
159    "src/src/glsl/ir.cpp",
160    "src/src/glsl/ir_expression_flattening.cpp",
161    "src/src/glsl/ir_expression_flattening.h",
162    "src/src/glsl/ir_function_can_inline.cpp",
163    "src/src/glsl/ir_function.cpp",
164    "src/src/glsl/ir_function_detect_recursion.cpp",
165    "src/src/glsl/ir.h",
166    "src/src/glsl/ir_hierarchical_visitor.cpp",
167    "src/src/glsl/ir_hierarchical_visitor.h",
168    "src/src/glsl/ir_hv_accept.cpp",
169    "src/src/glsl/ir_import_prototypes.cpp",
170    "src/src/glsl/ir_print_visitor.cpp",
171    "src/src/glsl/ir_print_visitor.h",
172    "src/src/glsl/ir_reader.cpp",
173    "src/src/glsl/ir_reader.h",
174    "src/src/glsl/ir_rvalue_visitor.cpp",
175    "src/src/glsl/ir_rvalue_visitor.h",
176    "src/src/glsl/ir_set_program_inouts.cpp",
177    "src/src/glsl/ir_validate.cpp",
178    "src/src/glsl/ir_variable_refcount.cpp",
179    "src/src/glsl/ir_variable_refcount.h",
180    "src/src/glsl/linker.cpp",
181    "src/src/glsl/linker.h",
182    "src/src/glsl/link_functions.cpp",
183    "src/src/glsl/link_uniform_initializers.cpp",
184    "src/src/glsl/link_uniforms.cpp",
185    "src/src/glsl/loop_analysis.cpp",
186    "src/src/glsl/loop_analysis.h",
187    "src/src/glsl/loop_controls.cpp",
188    "src/src/glsl/loop_unroll.cpp",
189    "src/src/glsl/lower_clip_distance.cpp",
190    "src/src/glsl/lower_discard.cpp",
191    "src/src/glsl/lower_discard_flow.cpp",
192    "src/src/glsl/lower_if_to_cond_assign.cpp",
193    "src/src/glsl/lower_instructions.cpp",
194    "src/src/glsl/lower_jumps.cpp",
195    "src/src/glsl/lower_mat_op_to_vec.cpp",
196    "src/src/glsl/lower_noise.cpp",
197    "src/src/glsl/lower_output_reads.cpp",
198    "src/src/glsl/lower_texture_projection.cpp",
199    "src/src/glsl/lower_ubo_reference.cpp",
200    "src/src/glsl/lower_variable_index_to_cond_assign.cpp",
201    "src/src/glsl/lower_vec_index_to_cond_assign.cpp",
202    "src/src/glsl/lower_vec_index_to_swizzle.cpp",
203    "src/src/glsl/lower_vector.cpp",
204    "src/src/glsl/opt_algebraic.cpp",
205    "src/src/glsl/opt_array_splitting.cpp",
206    "src/src/glsl/opt_constant_folding.cpp",
207    "src/src/glsl/opt_constant_propagation.cpp",
208    "src/src/glsl/opt_constant_variable.cpp",
209    "src/src/glsl/opt_copy_propagation.cpp",
210    "src/src/glsl/opt_copy_propagation_elements.cpp",
211    "src/src/glsl/opt_dead_code.cpp",
212    "src/src/glsl/opt_dead_code_local.cpp",
213    "src/src/glsl/opt_dead_functions.cpp",
214    "src/src/glsl/opt_function_inlining.cpp",
215    "src/src/glsl/opt_if_simplification.cpp",
216    "src/src/glsl/opt_noop_swizzle.cpp",
217    "src/src/glsl/opt_redundant_jumps.cpp",
218    "src/src/glsl/opt_structure_splitting.cpp",
219    "src/src/glsl/opt_swizzle_swizzle.cpp",
220    "src/src/glsl/opt_tree_grafting.cpp",
221    "src/src/glsl/program.h",
222    "src/src/glsl/ralloc.c",
223    "src/src/glsl/ralloc.h",
224    "src/src/glsl/s_expression.cpp",
225    "src/src/glsl/s_expression.h",
226    # Skipped in the GN build. This file duplicates symbols from errors.c and
227    # happens to link in GYP due to static library link ordering.
228    #"src/src/glsl/standalone_scaffolding.cpp",
229    #"src/src/glsl/standalone_scaffolding.h",
230    "src/src/glsl/strtod.c",
231    "src/src/glsl/strtod.h",
232  ]
233
234  configs -= [
235    "//build/config/compiler:chromium_code",
236  ]
237  configs += [
238    "//build/config/compiler:no_chromium_code",
239  ]
240  previous_configs = configs
241  configs = []
242  configs = [ ":mesa_internal_config" ] + previous_configs
243
244  if (is_clang) {
245    # Mesa triggers some of these Clang warnings.
246    configs -= [ "//build/config/clang:extra_warnings" ]
247  }
248
249  deps = [
250    ":mesa_headers",
251  ]
252}
253
254static_library("mesa") {
255  sources = [
256    "$generated_src_dir/mesa/builtin_function.cpp",
257    "$generated_src_dir/mesa/glapi_mapi_tmp_shared.h",
258    "src/src/mapi/mapi/entry.c",
259    "src/src/mapi/mapi/entry.h",
260    "src/src/mapi/mapi/mapi_glapi.c",
261    "src/src/mapi/mapi/stub.c",
262    "src/src/mapi/mapi/stub.h",
263    "src/src/mapi/mapi/table.c",
264    "src/src/mapi/mapi/table.h",
265    "src/src/mapi/mapi/u_current.c",
266    "src/src/mapi/mapi/u_current.h",
267    "src/src/mapi/mapi/u_execmem.c",
268    "src/src/mapi/mapi/u_execmem.h",
269    "src/src/mesa/main/accum.c",
270    "src/src/mesa/main/accum.h",
271    "src/src/mesa/main/api_arrayelt.c",
272    "src/src/mesa/main/api_arrayelt.h",
273    "src/src/mesa/main/api_exec.c",
274    "src/src/mesa/main/api_exec.h",
275    "$generated_src_dir/mesa/api_exec_es1.c",
276    "src/src/mesa/main/api_loopback.c",
277    "src/src/mesa/main/api_loopback.h",
278    "src/src/mesa/main/api_validate.c",
279    "src/src/mesa/main/api_validate.h",
280    "src/src/mesa/main/arbprogram.c",
281    "src/src/mesa/main/arbprogram.h",
282    "src/src/mesa/main/arrayobj.c",
283    "src/src/mesa/main/arrayobj.h",
284    "src/src/mesa/main/atifragshader.c",
285    "src/src/mesa/main/atifragshader.h",
286    "src/src/mesa/main/attrib.c",
287    "src/src/mesa/main/attrib.h",
288    "src/src/mesa/main/blend.c",
289    "src/src/mesa/main/blend.h",
290    "src/src/mesa/main/bufferobj.c",
291    "src/src/mesa/main/bufferobj.h",
292    "src/src/mesa/main/buffers.c",
293    "src/src/mesa/main/buffers.h",
294    "src/src/mesa/main/clear.c",
295    "src/src/mesa/main/clear.h",
296    "src/src/mesa/main/clip.c",
297    "src/src/mesa/main/clip.h",
298    "src/src/mesa/main/colortab.c",
299    "src/src/mesa/main/colortab.h",
300    "src/src/mesa/main/condrender.c",
301    "src/src/mesa/main/condrender.h",
302    "src/src/mesa/main/context.c",
303    "src/src/mesa/main/context.h",
304    "src/src/mesa/main/convolve.c",
305    "src/src/mesa/main/convolve.h",
306    "src/src/mesa/main/cpuinfo.c",
307    "src/src/mesa/main/cpuinfo.h",
308    "src/src/mesa/main/debug.c",
309    "src/src/mesa/main/debug.h",
310    "src/src/mesa/main/depth.c",
311    "src/src/mesa/main/depth.h",
312    "src/src/mesa/main/dlist.c",
313    "src/src/mesa/main/dlist.h",
314    "src/src/mesa/main/drawpix.c",
315    "src/src/mesa/main/drawpix.h",
316    "src/src/mesa/main/drawtex.c",
317    "src/src/mesa/main/drawtex.h",
318    "src/src/mesa/main/enable.c",
319    "src/src/mesa/main/enable.h",
320    "$generated_src_dir/mesa/enums.c",
321    "src/src/mesa/main/enums.h",
322    "src/src/mesa/main/errors.c",
323    "src/src/mesa/main/errors.h",
324    "src/src/mesa/main/es1_conversion.c",
325    "src/src/mesa/main/es1_conversion.h",
326    "src/src/mesa/main/eval.c",
327    "src/src/mesa/main/eval.h",
328    "src/src/mesa/main/execmem.c",
329    "src/src/mesa/main/extensions.c",
330    "src/src/mesa/main/extensions.h",
331    "src/src/mesa/main/fbobject.c",
332    "src/src/mesa/main/fbobject.h",
333    "src/src/mesa/main/feedback.c",
334    "src/src/mesa/main/feedback.h",
335    "src/src/mesa/main/ff_fragment_shader.cpp",
336    "src/src/mesa/main/ffvertex_prog.c",
337    "src/src/mesa/main/ffvertex_prog.h",
338    "src/src/mesa/main/fog.c",
339    "src/src/mesa/main/fog.h",
340    "src/src/mesa/main/format_pack.c",
341    "src/src/mesa/main/format_pack.h",
342    "src/src/mesa/main/format_unpack.c",
343    "src/src/mesa/main/format_unpack.h",
344    "src/src/mesa/main/formats.c",
345    "src/src/mesa/main/formats.h",
346    "src/src/mesa/main/framebuffer.c",
347    "src/src/mesa/main/framebuffer.h",
348    "src/src/mesa/main/get.c",
349    "src/src/mesa/main/get.h",
350    "src/src/mesa/main/getstring.c",
351    "src/src/mesa/main/glformats.c",
352    "src/src/mesa/main/glformats.h",
353    "src/src/mesa/main/hash.c",
354    "src/src/mesa/main/hash.h",
355    "src/src/mesa/main/hint.c",
356    "src/src/mesa/main/hint.h",
357    "src/src/mesa/main/histogram.c",
358    "src/src/mesa/main/histogram.h",
359    "src/src/mesa/main/image.c",
360    "src/src/mesa/main/image.h",
361    "src/src/mesa/main/imports.c",
362    "src/src/mesa/main/imports.h",
363    "src/src/mesa/main/light.c",
364    "src/src/mesa/main/light.h",
365    "src/src/mesa/main/lines.c",
366    "src/src/mesa/main/lines.h",
367    "src/src/mesa/main/matrix.c",
368    "src/src/mesa/main/matrix.h",
369    "src/src/mesa/main/mipmap.c",
370    "src/src/mesa/main/mipmap.h",
371    "src/src/mesa/main/mm.c",
372    "src/src/mesa/main/mm.h",
373    "src/src/mesa/main/multisample.c",
374    "src/src/mesa/main/multisample.h",
375    "src/src/mesa/main/nvprogram.c",
376    "src/src/mesa/main/nvprogram.h",
377    "src/src/mesa/main/pack.c",
378    "src/src/mesa/main/pack.h",
379    "src/src/mesa/main/pbo.c",
380    "src/src/mesa/main/pbo.h",
381    "src/src/mesa/main/pixel.c",
382    "src/src/mesa/main/pixel.h",
383    "src/src/mesa/main/pixelstore.c",
384    "src/src/mesa/main/pixelstore.h",
385    "src/src/mesa/main/pixeltransfer.c",
386    "src/src/mesa/main/pixeltransfer.h",
387    "src/src/mesa/main/points.c",
388    "src/src/mesa/main/points.h",
389    "src/src/mesa/main/polygon.c",
390    "src/src/mesa/main/polygon.h",
391    "src/src/mesa/main/querymatrix.c",
392    "src/src/mesa/main/queryobj.c",
393    "src/src/mesa/main/queryobj.h",
394    "src/src/mesa/main/rastpos.c",
395    "src/src/mesa/main/rastpos.h",
396    "src/src/mesa/main/readpix.c",
397    "src/src/mesa/main/readpix.h",
398    "src/src/mesa/main/remap.c",
399    "src/src/mesa/main/remap.h",
400    "src/src/mesa/main/renderbuffer.c",
401    "src/src/mesa/main/renderbuffer.h",
402    "src/src/mesa/main/samplerobj.c",
403    "src/src/mesa/main/samplerobj.h",
404    "src/src/mesa/main/scissor.c",
405    "src/src/mesa/main/scissor.h",
406    "src/src/mesa/main/shader_query.cpp",
407    "src/src/mesa/main/shaderapi.c",
408    "src/src/mesa/main/shaderapi.h",
409    "src/src/mesa/main/shaderobj.c",
410    "src/src/mesa/main/shaderobj.h",
411    "src/src/mesa/main/shared.c",
412    "src/src/mesa/main/shared.h",
413    "src/src/mesa/main/state.c",
414    "src/src/mesa/main/state.h",
415    "src/src/mesa/main/stencil.c",
416    "src/src/mesa/main/stencil.h",
417    "src/src/mesa/main/syncobj.c",
418    "src/src/mesa/main/syncobj.h",
419    "src/src/mesa/main/texcompress.c",
420    "src/src/mesa/main/texcompress.h",
421    "src/src/mesa/main/texcompress_cpal.c",
422    "src/src/mesa/main/texcompress_cpal.h",
423    "src/src/mesa/main/texcompress_etc.c",
424    "src/src/mesa/main/texcompress_etc.h",
425    "src/src/mesa/main/texcompress_fxt1.c",
426    "src/src/mesa/main/texcompress_fxt1.h",
427    "src/src/mesa/main/texcompress_rgtc.c",
428    "src/src/mesa/main/texcompress_rgtc.h",
429    "src/src/mesa/main/texcompress_s3tc.c",
430    "src/src/mesa/main/texcompress_s3tc.h",
431    "src/src/mesa/main/texenv.c",
432    "src/src/mesa/main/texenv.h",
433    "src/src/mesa/main/texformat.c",
434    "src/src/mesa/main/texformat.h",
435    "src/src/mesa/main/texgen.c",
436    "src/src/mesa/main/texgen.h",
437    "src/src/mesa/main/texgetimage.c",
438    "src/src/mesa/main/texgetimage.h",
439    "src/src/mesa/main/teximage.c",
440    "src/src/mesa/main/teximage.h",
441    "src/src/mesa/main/texobj.c",
442    "src/src/mesa/main/texobj.h",
443    "src/src/mesa/main/texparam.c",
444    "src/src/mesa/main/texparam.h",
445    "src/src/mesa/main/texstate.c",
446    "src/src/mesa/main/texstate.h",
447    "src/src/mesa/main/texstorage.c",
448    "src/src/mesa/main/texstorage.h",
449    "src/src/mesa/main/texstore.c",
450    "src/src/mesa/main/texstore.h",
451    "src/src/mesa/main/texturebarrier.c",
452    "src/src/mesa/main/texturebarrier.h",
453    "src/src/mesa/main/transformfeedback.c",
454    "src/src/mesa/main/transformfeedback.h",
455    "src/src/mesa/main/uniform_query.cpp",
456    "src/src/mesa/main/uniforms.c",
457    "src/src/mesa/main/uniforms.h",
458    "src/src/mesa/main/varray.c",
459    "src/src/mesa/main/varray.h",
460    "src/src/mesa/main/version.c",
461    "src/src/mesa/main/version.h",
462    "src/src/mesa/main/viewport.c",
463    "src/src/mesa/main/viewport.h",
464    "src/src/mesa/main/vtxfmt.c",
465    "src/src/mesa/main/vtxfmt.h",
466    "src/src/mesa/math/m_debug_clip.c",
467    "src/src/mesa/math/m_debug_norm.c",
468    "src/src/mesa/math/m_debug_xform.c",
469    "src/src/mesa/math/m_eval.c",
470    "src/src/mesa/math/m_eval.h",
471    "src/src/mesa/math/m_matrix.c",
472    "src/src/mesa/math/m_matrix.h",
473    "src/src/mesa/math/m_translate.c",
474    "src/src/mesa/math/m_translate.h",
475    "src/src/mesa/math/m_vector.c",
476    "src/src/mesa/math/m_vector.h",
477    "src/src/mesa/math/m_xform.c",
478    "src/src/mesa/math/m_xform.h",
479    "src/src/mesa/program/arbprogparse.c",
480    "src/src/mesa/program/arbprogparse.h",
481    "src/src/mesa/program/hash_table.c",
482    "src/src/mesa/program/hash_table.h",
483    "src/src/mesa/program/ir_to_mesa.cpp",
484    "src/src/mesa/program/ir_to_mesa.h",
485    "$generated_src_dir/mesa/lex.yy.c",
486    "src/src/mesa/program/nvfragparse.c",
487    "src/src/mesa/program/nvfragparse.h",
488    "src/src/mesa/program/nvvertparse.c",
489    "src/src/mesa/program/nvvertparse.h",
490    "src/src/mesa/program/prog_cache.c",
491    "src/src/mesa/program/prog_cache.h",
492    "src/src/mesa/program/prog_execute.c",
493    "src/src/mesa/program/prog_execute.h",
494    "src/src/mesa/program/prog_instruction.c",
495    "src/src/mesa/program/prog_instruction.h",
496    "src/src/mesa/program/prog_noise.c",
497    "src/src/mesa/program/prog_noise.h",
498    "src/src/mesa/program/prog_opt_constant_fold.c",
499    "src/src/mesa/program/prog_optimize.c",
500    "src/src/mesa/program/prog_optimize.h",
501    "src/src/mesa/program/prog_parameter.c",
502    "src/src/mesa/program/prog_parameter.h",
503    "src/src/mesa/program/prog_parameter_layout.c",
504    "src/src/mesa/program/prog_parameter_layout.h",
505    "src/src/mesa/program/prog_print.c",
506    "src/src/mesa/program/prog_print.h",
507    "src/src/mesa/program/prog_statevars.c",
508    "src/src/mesa/program/prog_statevars.h",
509    "src/src/mesa/program/program.c",
510    "src/src/mesa/program/program.h",
511    "$generated_src_dir/mesa/program/program_parse.tab.c",
512    "$generated_src_dir/mesa/program/program_parse.tab.h",
513    "src/src/mesa/program/program_parse_extra.c",
514    "src/src/mesa/program/programopt.c",
515    "src/src/mesa/program/programopt.h",
516    "src/src/mesa/program/register_allocate.c",
517    "src/src/mesa/program/register_allocate.h",
518    "src/src/mesa/program/sampler.cpp",
519    "src/src/mesa/program/sampler.h",
520    "src/src/mesa/program/string_to_uint_map.cpp",
521    "src/src/mesa/program/symbol_table.c",
522    "src/src/mesa/program/symbol_table.h",
523    "src/src/mesa/swrast/s_aaline.c",
524    "src/src/mesa/swrast/s_aaline.h",
525    "src/src/mesa/swrast/s_aatriangle.c",
526    "src/src/mesa/swrast/s_aatriangle.h",
527    "src/src/mesa/swrast/s_alpha.c",
528    "src/src/mesa/swrast/s_alpha.h",
529    "src/src/mesa/swrast/s_atifragshader.c",
530    "src/src/mesa/swrast/s_atifragshader.h",
531    "src/src/mesa/swrast/s_bitmap.c",
532    "src/src/mesa/swrast/s_blend.c",
533    "src/src/mesa/swrast/s_blend.h",
534    "src/src/mesa/swrast/s_blit.c",
535    "src/src/mesa/swrast/s_clear.c",
536    "src/src/mesa/swrast/s_context.c",
537    "src/src/mesa/swrast/s_context.h",
538    "src/src/mesa/swrast/s_copypix.c",
539    "src/src/mesa/swrast/s_depth.c",
540    "src/src/mesa/swrast/s_depth.h",
541    "src/src/mesa/swrast/s_drawpix.c",
542    "src/src/mesa/swrast/s_feedback.c",
543    "src/src/mesa/swrast/s_feedback.h",
544    "src/src/mesa/swrast/s_fog.c",
545    "src/src/mesa/swrast/s_fog.h",
546    "src/src/mesa/swrast/s_fragprog.c",
547    "src/src/mesa/swrast/s_fragprog.h",
548    "src/src/mesa/swrast/s_lines.c",
549    "src/src/mesa/swrast/s_lines.h",
550    "src/src/mesa/swrast/s_logic.c",
551    "src/src/mesa/swrast/s_logic.h",
552    "src/src/mesa/swrast/s_masking.c",
553    "src/src/mesa/swrast/s_masking.h",
554    "src/src/mesa/swrast/s_points.c",
555    "src/src/mesa/swrast/s_points.h",
556    "src/src/mesa/swrast/s_renderbuffer.c",
557    "src/src/mesa/swrast/s_renderbuffer.h",
558    "src/src/mesa/swrast/s_span.c",
559    "src/src/mesa/swrast/s_span.h",
560    "src/src/mesa/swrast/s_stencil.c",
561    "src/src/mesa/swrast/s_stencil.h",
562    "src/src/mesa/swrast/s_texcombine.c",
563    "src/src/mesa/swrast/s_texcombine.h",
564    "src/src/mesa/swrast/s_texfetch.c",
565    "src/src/mesa/swrast/s_texfetch.h",
566    "src/src/mesa/swrast/s_texfilter.c",
567    "src/src/mesa/swrast/s_texfilter.h",
568    "src/src/mesa/swrast/s_texrender.c",
569    "src/src/mesa/swrast/s_texture.c",
570    "src/src/mesa/swrast/s_triangle.c",
571    "src/src/mesa/swrast/s_triangle.h",
572    "src/src/mesa/swrast/s_zoom.c",
573    "src/src/mesa/swrast/s_zoom.h",
574    "src/src/mesa/swrast_setup/ss_context.c",
575    "src/src/mesa/swrast_setup/ss_context.h",
576    "src/src/mesa/swrast_setup/ss_triangle.c",
577    "src/src/mesa/swrast_setup/ss_triangle.h",
578    "src/src/mesa/tnl/t_context.c",
579    "src/src/mesa/tnl/t_context.h",
580    "src/src/mesa/tnl/t_draw.c",
581    "src/src/mesa/tnl/t_pipeline.c",
582    "src/src/mesa/tnl/t_pipeline.h",
583    "src/src/mesa/tnl/t_rasterpos.c",
584    "src/src/mesa/tnl/t_vb_fog.c",
585    "src/src/mesa/tnl/t_vb_light.c",
586    "src/src/mesa/tnl/t_vb_normals.c",
587    "src/src/mesa/tnl/t_vb_points.c",
588    "src/src/mesa/tnl/t_vb_program.c",
589    "src/src/mesa/tnl/t_vb_render.c",
590    "src/src/mesa/tnl/t_vb_texgen.c",
591    "src/src/mesa/tnl/t_vb_texmat.c",
592    "src/src/mesa/tnl/t_vb_vertex.c",
593    "src/src/mesa/tnl/t_vertex.c",
594    "src/src/mesa/tnl/t_vertex.h",
595    "src/src/mesa/tnl/t_vertex_generic.c",
596    "src/src/mesa/tnl/t_vertex_sse.c",
597    "src/src/mesa/tnl/t_vp_build.c",
598    "src/src/mesa/tnl/t_vp_build.h",
599    "src/src/mesa/vbo/vbo_context.c",
600    "src/src/mesa/vbo/vbo_context.h",
601    "src/src/mesa/vbo/vbo_exec.c",
602    "src/src/mesa/vbo/vbo_exec.h",
603    "src/src/mesa/vbo/vbo_exec_api.c",
604    "src/src/mesa/vbo/vbo_exec_array.c",
605    "src/src/mesa/vbo/vbo_exec_draw.c",
606    "src/src/mesa/vbo/vbo_exec_eval.c",
607    "src/src/mesa/vbo/vbo_noop.c",
608    "src/src/mesa/vbo/vbo_noop.h",
609    "src/src/mesa/vbo/vbo_primitive_restart.c",
610    "src/src/mesa/vbo/vbo_rebase.c",
611    "src/src/mesa/vbo/vbo_save.c",
612    "src/src/mesa/vbo/vbo_save.h",
613    "src/src/mesa/vbo/vbo_save_api.c",
614    "src/src/mesa/vbo/vbo_save_draw.c",
615    "src/src/mesa/vbo/vbo_save_loopback.c",
616    "src/src/mesa/vbo/vbo_split.c",
617    "src/src/mesa/vbo/vbo_split.h",
618    "src/src/mesa/vbo/vbo_split_copy.c",
619    "src/src/mesa/vbo/vbo_split_inplace.c",
620    "src/src/mesa/x86-64/x86-64.c",
621    "src/src/mesa/x86-64/x86-64.h",
622  ]
623
624  configs -= [
625    "//build/config/compiler:chromium_code",
626  ]
627  configs += [
628    "//build/config/compiler:no_chromium_code",
629  ]
630  previous_configs = configs
631  configs = []
632  configs = [ ":mesa_internal_config" ] + previous_configs
633
634  cflags = []
635
636  if (is_clang) {
637    cflags += [ "-Wno-absolute-value" ]
638  }
639
640  if (is_android && !is_clang) {
641    # Disable sincos() optimization to avoid a linker error
642    # since Android's math library doesn't have sincos().
643    # Either -fno-builtin-sin or -fno-builtin-cos works.
644    cflags += [ "-fno-builtin-sin" ]
645  }
646
647  if (is_win) {
648    # Because we're building as a static library
649    defines = [ "_GLAPI_NO_EXPORTS" ]
650  }
651
652  deps = [
653    ":mesa_headers",
654  ]
655}
656
657if (!is_android) {  # TODO(GYP) enable for Android.
658
659# Building this target will hide the native OpenGL shared library and
660# replace it with a slow software renderer.
661# TODO(GYP) http://crbug.com/380327 need support for loadable_module.
662#loadable_module("osmesa") {
663shared_library("osmesa") {
664  sources = [
665    "src/src/mesa/drivers/common/driverfuncs.c",
666    "src/src/mesa/drivers/common/driverfuncs.h",
667    "src/src/mesa/drivers/common/meta.c",
668    "src/src/mesa/drivers/common/meta.h",
669    "src/src/mesa/drivers/osmesa/osmesa.c",
670    "src/src/mesa/drivers/osmesa/osmesa.def",
671  ]
672
673  configs -= [
674    "//build/config/compiler:chromium_code",
675  ]
676  configs += [
677    ":mesa_headers_config",
678    "//build/config/compiler:no_chromium_code",
679  ]
680  previous_configs = configs
681  configs = []
682  configs = [ ":mesa_internal_config" ] + previous_configs
683
684  include_dirs = [ "src/src/mesa/drivers" ]
685
686  deps = [
687    ":mesa_headers",
688    ":mesa",
689    ":mesa_libglslcommon",
690  ]
691
692  if (is_win) {
693    defines = [
694      "BUILD_GL32",
695      "KEYWORD1=GLAPI",
696      "KEYWORD2=GLAPIENTRY",
697    ]
698  }
699}
700
701}  # !is_android
702
703# TODO(GYP) Android osmesa_in_lib_dir target.
704