1c42e6254cffb8ef480868e9c1942f73129fc4f80José Fonseca#######################################################################
233ceb6716a2166db75659fa66d85fb4cfb9633c7José Fonseca# SConscript for Mesa
3c42e6254cffb8ef480868e9c1942f73129fc4f80José Fonseca
4c42e6254cffb8ef480868e9c1942f73129fc4f80José Fonseca
5c42e6254cffb8ef480868e9c1942f73129fc4f80José FonsecaImport('*')
6f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paulimport filecmp
7f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paulimport os
8f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paulimport subprocess
9dff36e900c645401b26c9a44106459e96ee7a24dBrian Paulfrom sys import executable as python_cmd
10c42e6254cffb8ef480868e9c1942f73129fc4f80José Fonseca
11601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaenv = env.Clone()
12b9da3791c934e05b82063a8c79c423a0a8e29a94José Fonseca
13601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaenv.Append(CPPPATH = [
14601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    '#/src/mapi',
15601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    '#/src/glsl',
16601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    '#/src/mesa',
17601498ae73e654c2de997ea75075613a694d604dJosé Fonseca])
182105b61846aad8d0c12dec00ef0c9ebdaacd0d4aJosé Fonseca
19bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wuenv.Append(CPPDEFINES = [
20bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    'FEATURE_GL=1',
21bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu])
22bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu
23601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaif env['platform'] == 'windows':
24601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    env.Append(CPPDEFINES = [
25601498ae73e654c2de997ea75075613a694d604dJosé Fonseca        '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
26601498ae73e654c2de997ea75075613a694d604dJosé Fonseca        'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
27601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    ])
28bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    if not env['gles']:
29bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu        # prevent _glapi_* from being declared __declspec(dllimport)
30bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu        env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS'])
31bb045d339b53f7ddd42bfca363e3d589b0ddcf20Chia-I Wuelse:
32bb045d339b53f7ddd42bfca363e3d589b0ddcf20Chia-I Wu    env.Append(CPPDEFINES = [
33bb045d339b53f7ddd42bfca363e3d589b0ddcf20Chia-I Wu        'IN_DRI_DRIVER', # enable the remap table (for DRI drivers)
349121460f13c420d9cd2783636fe79bc4798eebedTapani Pälli        ('HAVE_DLOPEN', '1'),
35bb045d339b53f7ddd42bfca363e3d589b0ddcf20Chia-I Wu    ])
365c9c6b0d2398715d035e939eb8672ed7e95cfec5José Fonseca
37601498ae73e654c2de997ea75075613a694d604dJosé Fonseca#
38601498ae73e654c2de997ea75075613a694d604dJosé Fonseca# Source files
39601498ae73e654c2de997ea75075613a694d604dJosé Fonseca#
403371f7e5025e5288eaba78973a2c81ec5d5b1e4dMichal Krol
41601498ae73e654c2de997ea75075613a694d604dJosé Fonsecamain_sources = [
42601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/api_arrayelt.c',
43601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/api_exec.c',
44601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/api_loopback.c',
45601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/api_validate.c',
46601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/accum.c',
47601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/arbprogram.c',
48601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/atifragshader.c',
49601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/attrib.c',
50601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/arrayobj.c',
51601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/blend.c',
52601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/bufferobj.c',
53601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/buffers.c',
54601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/clear.c',
55601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/clip.c',
56601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/colortab.c',
57601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/condrender.c',
58601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/context.c',
59601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/convolve.c',
60601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/cpuinfo.c',
61601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/debug.c',
62601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/depth.c',
63601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/dlist.c',
64601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/drawpix.c',
65601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/drawtex.c',
66601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/enable.c',
67601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/enums.c',
685ab088c7e201ea7e55459a24a945abcaa90d12c6nobled    'main/errors.c',
69601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/eval.c',
70601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/execmem.c',
71601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/extensions.c',
72601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/fbobject.c',
73601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/feedback.c',
74dee6eafbd2f8acf99da99960572f42fcf473f86aVinson Lee    'main/ff_fragment_shader.cpp',
75601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/ffvertex_prog.c',
76601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/fog.c',
77601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/formats.c',
78aa6cb952c917f4280d75b322c05885fcf7eb6cdbBrian Paul    'main/format_pack.c',
79730952aa12c257af25af0873e0b284f742fb485eBrian Paul    'main/format_unpack.c',
80601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/framebuffer.c',
81601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/get.c',
82601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/getstring.c',
839ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen    'main/glformats.c',
84601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/hash.c',
85601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/hint.c',
86601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/histogram.c',
87601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/image.c',
88601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/imports.c',
89601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/light.c',
90601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/lines.c',
91601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/matrix.c',
92601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/mipmap.c',
93601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/mm.c',
94601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/multisample.c',
95601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/nvprogram.c',
96601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/pack.c',
97b70610b9823fc7dc3672735c11be1a75fbb1a2a4Brian Paul    'main/pbo.c',
98601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/pixel.c',
99601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/pixelstore.c',
100601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/pixeltransfer.c',
101601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/points.c',
102601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/polygon.c',
103601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/querymatrix.c',
104601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/queryobj.c',
105601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/rastpos.c',
106601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/readpix.c',
107601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/remap.c',
108601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/renderbuffer.c',
10934a5d3b9f4740601708c82093e2114356d749e65Brian Paul    'main/samplerobj.c',
110601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/scissor.c',
111601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/shaderapi.c',
112601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/shaderobj.c',
1136399b7d638ec61889820f949ff869822e6186bbfBrian Paul    'main/shader_query.cpp',
114601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/shared.c',
115601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/state.c',
116601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/stencil.c',
117601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/syncobj.c',
118601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texcompress.c',
119c1a9e6010baceeff78f72ac0692aefc4312d815fBrian Paul    'main/texcompress_cpal.c',
12093893139a4e81d0ac59c30ce7d1a124902bd36efVinson Lee    'main/texcompress_rgtc.c',
121601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texcompress_s3tc.c',
122601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texcompress_fxt1.c',
12351f4d2725417088c75d512b69a31a26ae5cb3ef2Chia-I Wu    'main/texcompress_etc.c',
124601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texenv.c',
125601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texformat.c',
126601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texgen.c',
127601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texgetimage.c',
128601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/teximage.c',
129601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texobj.c',
130601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texparam.c',
131601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texstate.c',
13229eb2e89444691d319902679016738112173cc31Brian Paul    'main/texstorage.c',
133601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/texstore.c',
134d0e805ebd8fd492241e77c015ae7b2a0b7840869Marek Olšák    'main/texturebarrier.c',
135601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/transformfeedback.c',
136116b7bb5eac836953fbfbc627cabca4a7ee39937Vinson Lee    'main/uniform_query.cpp',
137601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/uniforms.c',
138601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/varray.c',
139601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/version.c',
140601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/viewport.c',
141601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'main/vtxfmt.c',
142601498ae73e654c2de997ea75075613a694d604dJosé Fonseca]
1435c9c6b0d2398715d035e939eb8672ed7e95cfec5José Fonseca
144601498ae73e654c2de997ea75075613a694d604dJosé Fonsecamath_sources = [
145601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'math/m_debug_clip.c',
146601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'math/m_debug_norm.c',
147601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'math/m_debug_xform.c',
148601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'math/m_eval.c',
149601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'math/m_matrix.c',
150601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'math/m_translate.c',
151601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'math/m_vector.c',
152601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'math/m_xform.c',
153601498ae73e654c2de997ea75075613a694d604dJosé Fonseca]
154601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
1558e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonsecaswrast_sources = [
1568e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_aaline.c',
1578e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_aatriangle.c',
1588e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_alpha.c',
1598e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_atifragshader.c',
1608e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_bitmap.c',
1618e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_blend.c',
1628e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_blit.c',
1638e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_clear.c',
1648e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_copypix.c',
1658e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_context.c',
1668e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_depth.c',
1678e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_drawpix.c',
1688e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_feedback.c',
1698e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_fog.c',
1708e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_fragprog.c',
1718e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_lines.c',
1728e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_logic.c',
1738e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_masking.c',
1748e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_points.c',
175b85284f45e8b05ba9a0dac8dd95a9c078e4a635eBrian Paul    'swrast/s_renderbuffer.c',
1768e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_span.c',
1778e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_stencil.c',
1788e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_texcombine.c',
179baeefef2c0445bfd717a3086fdd9b5bd5d9cb675Brian Paul    'swrast/s_texfetch.c',
1808e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_texfilter.c',
181755f2e2ae597df9208523b0996bbdabf3db463b0Brian Paul    'swrast/s_texrender.c',
1826f1846e3921e22f2744466ec791b8965ecee1d33Brian Paul    'swrast/s_texture.c',
1838e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_triangle.c',
1848e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast/s_zoom.c',
1858e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca]
1868e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca
1878e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonsecaswrast_setup_sources = [
1888e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast_setup/ss_context.c',
1898e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'swrast_setup/ss_triangle.c',
1908e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca]
1918e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca
1928e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonsecatnl_sources = [
1938e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_context.c',
1948e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_pipeline.c',
1958e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_draw.c',
1968e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_rasterpos.c',
1978e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_program.c',
1988e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_render.c',
1998e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_texgen.c',
2008e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_texmat.c',
2018e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_vertex.c',
2028e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_fog.c',
2038e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_light.c',
2048e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_normals.c',
2058e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vb_points.c',
2068e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vp_build.c',
2078e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vertex.c',
2088e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vertex_sse.c',
2098e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'tnl/t_vertex_generic.c',
2108e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca]
2118e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca
212601498ae73e654c2de997ea75075613a694d604dJosé Fonsecavbo_sources = [
213601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_context.c',
214601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_exec.c',
215601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_exec_api.c',
216601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_exec_array.c',
217601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_exec_draw.c',
218601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_exec_eval.c',
219e6c4159372310110ec81273c5d15481c903fefedBrian Paul    'vbo/vbo_noop.c',
220bc8e0f5b0ff82c919ed1ee67e4fad55705937b30Jordan Justen    'vbo/vbo_primitive_restart.c',
221601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_rebase.c',
222601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_split.c',
223601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_split_copy.c',
224601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_split_inplace.c',
225601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_save.c',
226601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_save_api.c',
227601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_save_draw.c',
228601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'vbo/vbo_save_loopback.c',
229601498ae73e654c2de997ea75075613a694d604dJosé Fonseca]
230601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
231601498ae73e654c2de997ea75075613a694d604dJosé Fonsecastatetracker_sources = [
232601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom.c',
2334d9f263d7c8fc2213c369c73c86aa39f9d8659beBrian Paul    'state_tracker/st_atom_array.c',
234601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_blend.c',
235601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_clip.c',
236601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_constbuf.c',
237601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_depth.c',
238601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_framebuffer.c',
239601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_msaa.c',
240601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_pixeltransfer.c',
241601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_sampler.c',
242601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_scissor.c',
243601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_shader.c',
244601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_rasterizer.c',
245601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_stipple.c',
246601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_texture.c',
247601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_atom_viewport.c',
248601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_bitmap.c',
249601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_blit.c',
250601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_bufferobjects.c',
251601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_clear.c',
252601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_condrender.c',
253601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_flush.c',
254601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_drawpixels.c',
255601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_drawtex.c',
256601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_eglimage.c',
257601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_fbo.c',
258601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_feedback.c',
259601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_program.c',
260601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_queryobj.c',
261601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_rasterpos.c',
262601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_readpixels.c',
2635257a6dbc65d742e6d0fcf4278a4157b2f39fdf7Marek Olšák    'state_tracker/st_cb_syncobj.c',
264601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_strings.c',
265601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_texture.c',
266aea4ed41ed9b4d0442d1090ac1f01231a9859796Marek Olšák    'state_tracker/st_cb_texturebarrier.c',
267601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_viewport.c',
268601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_cb_xformfb.c',
269601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_context.c',
270601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_debug.c',
271601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_draw.c',
272601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_draw_feedback.c',
273601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_extensions.c',
274601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_format.c',
275d7f2e38fca38a5521e930242be46be5a70a9cbd3Brian Paul    'state_tracker/st_glsl_to_tgsi.cpp',
276601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_gen_mipmap.c',
277601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_manager.c',
278601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_mesa_to_tgsi.c',
279601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_program.c',
280601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'state_tracker/st_texture.c',
281601498ae73e654c2de997ea75075613a694d604dJosé Fonseca]
282601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
283e642d61d130b725c0c3efbc87f86a4968311ba2aBrian Paulenv.Append(YACCFLAGS = '-d -p "_mesa_program_"')
2848be58df67a3d3cc682407f10badcb92a1c988e65Kenneth Graunkeprogram_lex = env.CFile('program/lex.yy.c', 'program/program_lexer.l')
2858be58df67a3d3cc682407f10badcb92a1c988e65Kenneth Graunkeprogram_parse = env.CFile('program/program_parse.tab.c',
2868be58df67a3d3cc682407f10badcb92a1c988e65Kenneth Graunke                          'program/program_parse.y')
287dbfbb8cf6da472e9000481ebd6a2a6b4e4845560José Fonseca
288dbfbb8cf6da472e9000481ebd6a2a6b4e4845560José Fonseca# Make program/program_parse.tab.h reacheable from the include path
2895d0e8beaa2051c28a7ac941e8aaad286e39e1267José Fonsecaenv.Append(CPPPATH = [Dir('.').abspath])
290dbfbb8cf6da472e9000481ebd6a2a6b4e4845560José Fonseca
291601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaprogram_sources = [
292601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/arbprogparse.c',
293601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/hash_table.c',
294601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/ir_to_mesa.cpp',
295601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/nvfragparse.c',
296601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/nvvertparse.c',
297601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/program.c',
298601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/program_parse_extra.c',
299601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_cache.c',
300601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_execute.c',
301601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_instruction.c',
302601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_noise.c',
303601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_optimize.c',
30454c48a95e6e0573886433f94ac83293876ffe03dIan Romanick    'program/prog_opt_constant_fold.c',
305601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_parameter.c',
306601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_parameter_layout.c',
307601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_print.c',
308601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/prog_statevars.c',
309601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/programopt.c',
310601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/sampler.cpp',
311601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    'program/symbol_table.c',
3126399b7d638ec61889820f949ff869822e6186bbfBrian Paul    'program/string_to_uint_map.cpp',
3138be58df67a3d3cc682407f10badcb92a1c988e65Kenneth Graunke    program_lex,
3148be58df67a3d3cc682407f10badcb92a1c988e65Kenneth Graunke    program_parse[0],
315601498ae73e654c2de997ea75075613a694d604dJosé Fonseca]
316601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
3178e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonsecacommon_driver_sources =	[
3188e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'drivers/common/driverfuncs.c',
3198e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    'drivers/common/meta.c',
3208e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca]
3218e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca
322601498ae73e654c2de997ea75075613a694d604dJosé Fonsecamesa_sources = (
323601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    main_sources +
324601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    math_sources +
325601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    program_sources +
326601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    vbo_sources +
3278e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    tnl_sources +
3288e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    swrast_sources +
3298e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    swrast_setup_sources +
3308e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca    common_driver_sources +
331601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    statetracker_sources
332601498ae73e654c2de997ea75075613a694d604dJosé Fonseca)
333601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
334dff36e900c645401b26c9a44106459e96ee7a24dBrian PaulGLAPI = '#src/mapi/glapi/'
335dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul
336bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wuif env['gles']:
337bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu
338bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    env.Append(CPPDEFINES = ['FEATURE_ES1=1', 'FEATURE_ES2=1'])
339bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu
340bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    # generate GLES sources
34134472a0d8713c4eb300c9d1de0844c8b78bcf1abIan Romanick    gles_sources = ['main/es1_conversion.c',]
342bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    gles_sources += env.CodeGenerate(
343bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu        target = 'main/api_exec_es1.c',
344bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu        script = 'main/es_generator.py',
345bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu        source = 'main/APIspec.xml',
346bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu        command = python_cmd + ' $SCRIPT -S $SOURCE -V GLES1.1 > $TARGET'
347bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    )
348bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu
349bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    # generate GLES headers
350bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    gles_headers = []
351bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    gles_headers += env.CodeGenerate(
3526eff33dc7f2cd6e1430bd8dcaef4a7eb9fe3f6eeChia-I Wu        target = 'main/api_exec_es1_dispatch.h',
353bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu        script = GLAPI + 'gen/gl_table.py',
3545076561b35b9c2c78f277ab03bf1e642094ee20eChia-I Wu        source = GLAPI + 'gen/gl_and_es_API.xml',
3555076561b35b9c2c78f277ab03bf1e642094ee20eChia-I Wu        command = python_cmd + ' $SCRIPT -c es1 -m remap_table -f $SOURCE > $TARGET',
356bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    )
357bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    gles_headers += env.CodeGenerate(
3586eff33dc7f2cd6e1430bd8dcaef4a7eb9fe3f6eeChia-I Wu        target = 'main/api_exec_es1_remap_helper.h',
359bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu        script = GLAPI + 'gen/remap_helper.py',
3605076561b35b9c2c78f277ab03bf1e642094ee20eChia-I Wu        source = GLAPI + 'gen/gl_and_es_API.xml',
3615076561b35b9c2c78f277ab03bf1e642094ee20eChia-I Wu        command = python_cmd + ' $SCRIPT -c es1 -f $SOURCE > $TARGET',
362bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    )
363bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu
364bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    env.Depends(gles_sources, gles_headers)
365bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu
366bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    # gles_sources #include gles_headers with full path
367bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    env.Append(CPPPATH = [gles_headers[0].dir.up().up()])
368bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu
369bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu    mesa_sources += gles_sources
370bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu
371601498ae73e654c2de997ea75075613a694d604dJosé Fonseca#
372601498ae73e654c2de997ea75075613a694d604dJosé Fonseca# Assembly sources
373601498ae73e654c2de997ea75075613a694d604dJosé Fonseca#
374c5e646002291fdc372dc5db507c71017ec0c0e70Vinson Leeif env['gcc'] and env['platform'] not in ('darwin', 'windows'):
375f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca    if env['machine'] == 'x86':
376f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        env.Append(CPPDEFINES = [
377f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'USE_X86_ASM',
378f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'USE_MMX_ASM',
379f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'USE_3DNOW_ASM',
380f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'USE_SSE_ASM',
381f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        ])
382f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        mesa_sources += [
383f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/common_x86.c',
384f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/x86_xform.c',
385f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/3dnow.c',
386f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/sse.c',
387f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/common_x86_asm.S',
388f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/x86_xform2.S',
389f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/x86_xform3.S',
390f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/x86_xform4.S',
391f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/x86_cliptest.S',
392f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/mmx_blend.S',
393f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/3dnow_xform1.S',
394f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/3dnow_xform2.S',
395f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/3dnow_xform3.S',
396f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/3dnow_xform4.S',
397f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/3dnow_normal.S',
398f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/sse_xform1.S',
399f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/sse_xform2.S',
400f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/sse_xform3.S',
401f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/sse_xform4.S',
402f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/sse_normal.S',
403f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86/read_rgba_span_x86.S',
404f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        ]
405f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca    elif env['machine'] == 'x86_64':
406f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        env.Append(CPPDEFINES = [
407f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'USE_X86_64_ASM',
408f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        ])
409f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        mesa_sources += [
410f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86-64/x86-64.c',
411f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'x86-64/xform4.S',
412f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        ]
413f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca    elif env['machine'] == 'sparc':
414f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        mesa_sources += [
415f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'sparc/sparc.c',
4168676890018a94b475dd0bb7389f3b77f37e36fdbJon TURNEY            'sparc/sparc_clip.S',
417f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'sparc/norm.S',
418f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'sparc/xform.S',
419f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        ]
420f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca    else:
421f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        pass
422601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
423f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca    # Generate matypes.h
424f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca    if env['machine'] in ('x86', 'x86_64'):
425f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        # See http://www.scons.org/wiki/UsingCodeGenerators
426f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        gen_matypes = env.Program(
427f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            target = 'gen_matypes',
428f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            source = 'x86/gen_matypes.c',
429f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        )
430f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        matypes = env.Command(
431f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            'matypes.h',
432f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            gen_matypes,
433f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca            gen_matypes[0].abspath + ' > $TARGET',
434f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        )
435f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        # Add the dir containing the generated header (somewhere inside  the
436f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        # build dir) to the include path
437f9156ebcc4b26c5213750d4a9d032d65b60c9224José Fonseca        env.Append(CPPPATH = [matypes[0].dir])
438601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
4390c2455031d7e5d969252ddb892b31365f6bb5da2Brian Paul
440dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul# The enums.c file is generated from the GL/ES API.xml file
441dff36e900c645401b26c9a44106459e96ee7a24dBrian Paulenv.CodeGenerate(
442dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul    target = 'main/enums.c',
443dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul    script = GLAPI + 'gen/gl_enums.py',
444dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul    source = GLAPI + 'gen/gl_and_es_API.xml',
445dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul    command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
446dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul    )
447dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul
448dff36e900c645401b26c9a44106459e96ee7a24dBrian Paul# We also depend on the auto-generated GL API headers
449dff36e900c645401b26c9a44106459e96ee7a24dBrian Paulenv.Depends(mesa_sources, glapi_headers)
450f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul
451f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul
452f83af361a4e44ee89c63e769501ed93caa22e30fBrian Pauldef write_git_sha1_h_file(filename):
453f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    """Mesa looks for a git_sha1.h file at compile time in order to display
454f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    the current git hash id in the GL_VERSION string.  This function tries
455f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    to retrieve the git hashid and write the header file.  An empty file
456f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    will be created if anything goes wrong."""
457f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul
458f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    args = [ 'git', 'log', '-n', '1', '--oneline' ]
459f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    try:
460f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul        (commit, foo) = subprocess.Popen(args, stdout=subprocess.PIPE).communicate()
461f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    except:
462f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul        # git log command didn't work
463f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul        if not os.path.exists(filename):
464f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul            # create an empty file if none already exists
465f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul            f = open(filename, "w")
466f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul            f.close()
467f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul        return
468f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul
469d487cc23a17ad5216f7aaed478402cf23c7837abBrian Paul    commit = '#define MESA_GIT_SHA1 "git-%s"\n' % commit[0:7]
470f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    tempfile = "git_sha1.h.tmp"
471f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    f = open(tempfile, "w")
472f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    f.write(commit)
473622ee08e516afc406b21df3d354037bab73a30a7Vinson Lee    f.close()
474f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    if not os.path.exists(filename) or not filecmp.cmp(tempfile, filename):
475f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul        # The filename does not exist or it's different from the new file,
476f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul        # so replace old file with new.
477e112287474e225969fb10e6bc744d9c48a853fc6Brian Paul        if os.path.exists(filename):
478e112287474e225969fb10e6bc744d9c48a853fc6Brian Paul            os.remove(filename)
479f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul        os.rename(tempfile, filename)
480f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul    return
481f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul
482f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul
483f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paul# Create the git_sha1.h header file
484f83af361a4e44ee89c63e769501ed93caa22e30fBrian Paulwrite_git_sha1_h_file("main/git_sha1.h")
485622ee08e516afc406b21df3d354037bab73a30a7Vinson Lee# and update CPPPATH so the git_sha1.h header can be found
486622ee08e516afc406b21df3d354037bab73a30a7Vinson Leeenv.Append(CPPPATH = ["#" + env['build_dir'] + "/mesa/main"])
4870c2455031d7e5d969252ddb892b31365f6bb5da2Brian Paul
4880c2455031d7e5d969252ddb892b31365f6bb5da2Brian Paul
489601498ae73e654c2de997ea75075613a694d604dJosé Fonseca#
490601498ae73e654c2de997ea75075613a694d604dJosé Fonseca# Libraries
491601498ae73e654c2de997ea75075613a694d604dJosé Fonseca#
492601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
493601498ae73e654c2de997ea75075613a694d604dJosé Fonsecamesa = env.ConvenienceLibrary(
494601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    target = 'mesa',
495601498ae73e654c2de997ea75075613a694d604dJosé Fonseca    source = mesa_sources,
496601498ae73e654c2de997ea75075613a694d604dJosé Fonseca)
497601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
498601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaenv.Alias('mesa', mesa)
499601498ae73e654c2de997ea75075613a694d604dJosé Fonseca
500601498ae73e654c2de997ea75075613a694d604dJosé FonsecaExport('mesa')
5018e8a56eaa068d431a4b4a1795e2cb52711f168d6José Fonseca
5028e8a56eaa068d431a4b4a1795e2cb52711f168d6José FonsecaSConscript('drivers/SConscript')
503