| José Fonseca | c42e625 | 2008-01-31 13:14:35 +0900 | [diff] [blame] | 1 | ####################################################################### | 
| José Fonseca | 33ceb67 | 2008-02-18 10:52:44 +0000 | [diff] [blame] | 2 | # SConscript for Mesa | 
| José Fonseca | c42e625 | 2008-01-31 13:14:35 +0900 | [diff] [blame] | 3 |  | 
 | 4 |  | 
 | 5 | Import('*') | 
 | 6 |  | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 7 | env = env.Clone() | 
| José Fonseca | b9da379 | 2008-02-19 15:07:53 +0900 | [diff] [blame] | 8 |  | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 9 | env.Append(CPPPATH = [ | 
 | 10 |     '#/src/mapi', | 
 | 11 |     '#/src/glsl', | 
 | 12 |     '#/src/mesa', | 
 | 13 | ]) | 
| José Fonseca | 2105b61 | 2009-01-06 16:20:12 +0000 | [diff] [blame] | 14 |  | 
| Chia-I Wu | bb770af | 2011-01-14 17:50:29 +0800 | [diff] [blame] | 15 | env.Append(CPPDEFINES = [ | 
 | 16 |     'FEATURE_GL=1', | 
 | 17 | ]) | 
 | 18 |  | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 19 | if env['platform'] == 'windows': | 
 | 20 |     env.Append(CPPDEFINES = [ | 
 | 21 |         '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers | 
 | 22 |         'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 23 |     ]) | 
| Chia-I Wu | bb770af | 2011-01-14 17:50:29 +0800 | [diff] [blame] | 24 |     if not env['gles']: | 
 | 25 |         # prevent _glapi_* from being declared __declspec(dllimport) | 
 | 26 |         env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS']) | 
| Chia-I Wu | bb045d3 | 2010-11-20 17:47:11 -0800 | [diff] [blame] | 27 | else: | 
 | 28 |     env.Append(CPPDEFINES = [ | 
 | 29 |         'IN_DRI_DRIVER', # enable the remap table (for DRI drivers) | 
 | 30 |     ]) | 
| José Fonseca | 5c9c6b0 | 2008-06-04 23:56:57 +0900 | [diff] [blame] | 31 |  | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 32 | # | 
 | 33 | # Source files | 
 | 34 | # | 
| Michal Krol | 3371f7e | 2009-11-25 14:52:21 +0100 | [diff] [blame] | 35 |  | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 36 | main_sources = [ | 
 | 37 |     'main/api_arrayelt.c', | 
 | 38 |     'main/api_exec.c', | 
 | 39 |     'main/api_loopback.c', | 
 | 40 |     'main/api_noop.c', | 
 | 41 |     'main/api_validate.c', | 
 | 42 |     'main/accum.c', | 
 | 43 |     'main/arbprogram.c', | 
 | 44 |     'main/atifragshader.c', | 
 | 45 |     'main/attrib.c', | 
 | 46 |     'main/arrayobj.c', | 
 | 47 |     'main/blend.c', | 
 | 48 |     'main/bufferobj.c', | 
 | 49 |     'main/buffers.c', | 
 | 50 |     'main/clear.c', | 
 | 51 |     'main/clip.c', | 
 | 52 |     'main/colortab.c', | 
 | 53 |     'main/condrender.c', | 
 | 54 |     'main/context.c', | 
 | 55 |     'main/convolve.c', | 
 | 56 |     'main/cpuinfo.c', | 
 | 57 |     'main/debug.c', | 
 | 58 |     'main/depth.c', | 
 | 59 |     'main/depthstencil.c', | 
 | 60 |     'main/dlist.c', | 
 | 61 |     'main/dlopen.c', | 
 | 62 |     'main/drawpix.c', | 
 | 63 |     'main/drawtex.c', | 
 | 64 |     'main/enable.c', | 
 | 65 |     'main/enums.c', | 
 | 66 |     'main/eval.c', | 
 | 67 |     'main/execmem.c', | 
 | 68 |     'main/extensions.c', | 
 | 69 |     'main/fbobject.c', | 
 | 70 |     'main/feedback.c', | 
 | 71 |     'main/ffvertex_prog.c', | 
 | 72 |     'main/fog.c', | 
 | 73 |     'main/formats.c', | 
 | 74 |     'main/framebuffer.c', | 
 | 75 |     'main/get.c', | 
 | 76 |     'main/getstring.c', | 
 | 77 |     'main/hash.c', | 
 | 78 |     'main/hint.c', | 
 | 79 |     'main/histogram.c', | 
 | 80 |     'main/image.c', | 
 | 81 |     'main/imports.c', | 
 | 82 |     'main/light.c', | 
 | 83 |     'main/lines.c', | 
 | 84 |     'main/matrix.c', | 
 | 85 |     'main/mipmap.c', | 
 | 86 |     'main/mm.c', | 
 | 87 |     'main/multisample.c', | 
 | 88 |     'main/nvprogram.c', | 
 | 89 |     'main/pack.c', | 
| Brian Paul | b70610b | 2011-02-28 18:24:35 -0700 | [diff] [blame] | 90 |     'main/pbo.c', | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 91 |     'main/pixel.c', | 
 | 92 |     'main/pixelstore.c', | 
 | 93 |     'main/pixeltransfer.c', | 
 | 94 |     'main/points.c', | 
 | 95 |     'main/polygon.c', | 
 | 96 |     'main/querymatrix.c', | 
 | 97 |     'main/queryobj.c', | 
 | 98 |     'main/rastpos.c', | 
 | 99 |     'main/readpix.c', | 
 | 100 |     'main/remap.c', | 
 | 101 |     'main/renderbuffer.c', | 
 | 102 |     'main/scissor.c', | 
 | 103 |     'main/shaderapi.c', | 
 | 104 |     'main/shaderobj.c', | 
 | 105 |     'main/shared.c', | 
 | 106 |     'main/state.c', | 
 | 107 |     'main/stencil.c', | 
 | 108 |     'main/syncobj.c', | 
 | 109 |     'main/texcompress.c', | 
| Vinson Lee | 9389313 | 2011-02-27 23:17:49 -0800 | [diff] [blame] | 110 |     'main/texcompress_rgtc.c', | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 111 |     'main/texcompress_s3tc.c', | 
 | 112 |     'main/texcompress_fxt1.c', | 
 | 113 |     'main/texenv.c', | 
 | 114 |     'main/texenvprogram.c', | 
 | 115 |     'main/texfetch.c', | 
 | 116 |     'main/texformat.c', | 
 | 117 |     'main/texgen.c', | 
 | 118 |     'main/texgetimage.c', | 
 | 119 |     'main/teximage.c', | 
 | 120 |     'main/texobj.c', | 
 | 121 |     'main/texpal.c', | 
 | 122 |     'main/texparam.c', | 
 | 123 |     'main/texrender.c', | 
 | 124 |     'main/texstate.c', | 
 | 125 |     'main/texstore.c', | 
 | 126 |     'main/transformfeedback.c', | 
 | 127 |     'main/uniforms.c', | 
 | 128 |     'main/varray.c', | 
 | 129 |     'main/version.c', | 
 | 130 |     'main/viewport.c', | 
 | 131 |     'main/vtxfmt.c', | 
 | 132 | ] | 
| José Fonseca | 5c9c6b0 | 2008-06-04 23:56:57 +0900 | [diff] [blame] | 133 |  | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 134 | math_sources = [ | 
 | 135 |     'math/m_debug_clip.c', | 
 | 136 |     'math/m_debug_norm.c', | 
 | 137 |     'math/m_debug_xform.c', | 
 | 138 |     'math/m_eval.c', | 
 | 139 |     'math/m_matrix.c', | 
 | 140 |     'math/m_translate.c', | 
 | 141 |     'math/m_vector.c', | 
 | 142 |     'math/m_xform.c', | 
 | 143 | ] | 
 | 144 |  | 
 | 145 | vbo_sources = [ | 
 | 146 |     'vbo/vbo_context.c', | 
 | 147 |     'vbo/vbo_exec.c', | 
 | 148 |     'vbo/vbo_exec_api.c', | 
 | 149 |     'vbo/vbo_exec_array.c', | 
 | 150 |     'vbo/vbo_exec_draw.c', | 
 | 151 |     'vbo/vbo_exec_eval.c', | 
 | 152 |     'vbo/vbo_rebase.c', | 
 | 153 |     'vbo/vbo_split.c', | 
 | 154 |     'vbo/vbo_split_copy.c', | 
 | 155 |     'vbo/vbo_split_inplace.c', | 
 | 156 |     'vbo/vbo_save.c', | 
 | 157 |     'vbo/vbo_save_api.c', | 
 | 158 |     'vbo/vbo_save_draw.c', | 
 | 159 |     'vbo/vbo_save_loopback.c', | 
 | 160 | ] | 
 | 161 |  | 
 | 162 | vf_sources = [ | 
 | 163 |     'vf/vf.c', | 
 | 164 |     'vf/vf_generic.c', | 
 | 165 |     'vf/vf_sse.c', | 
 | 166 | ] | 
 | 167 |  | 
 | 168 | statetracker_sources = [ | 
 | 169 |     'state_tracker/st_atom.c', | 
 | 170 |     'state_tracker/st_atom_blend.c', | 
 | 171 |     'state_tracker/st_atom_clip.c', | 
 | 172 |     'state_tracker/st_atom_constbuf.c', | 
 | 173 |     'state_tracker/st_atom_depth.c', | 
 | 174 |     'state_tracker/st_atom_framebuffer.c', | 
 | 175 |     'state_tracker/st_atom_msaa.c', | 
 | 176 |     'state_tracker/st_atom_pixeltransfer.c', | 
 | 177 |     'state_tracker/st_atom_sampler.c', | 
 | 178 |     'state_tracker/st_atom_scissor.c', | 
 | 179 |     'state_tracker/st_atom_shader.c', | 
 | 180 |     'state_tracker/st_atom_rasterizer.c', | 
 | 181 |     'state_tracker/st_atom_stipple.c', | 
 | 182 |     'state_tracker/st_atom_texture.c', | 
 | 183 |     'state_tracker/st_atom_viewport.c', | 
 | 184 |     'state_tracker/st_cb_accum.c', | 
 | 185 |     'state_tracker/st_cb_bitmap.c', | 
 | 186 |     'state_tracker/st_cb_blit.c', | 
 | 187 |     'state_tracker/st_cb_bufferobjects.c', | 
 | 188 |     'state_tracker/st_cb_clear.c', | 
 | 189 |     'state_tracker/st_cb_condrender.c', | 
 | 190 |     'state_tracker/st_cb_flush.c', | 
 | 191 |     'state_tracker/st_cb_drawpixels.c', | 
 | 192 |     'state_tracker/st_cb_drawtex.c', | 
 | 193 |     'state_tracker/st_cb_eglimage.c', | 
 | 194 |     'state_tracker/st_cb_fbo.c', | 
 | 195 |     'state_tracker/st_cb_feedback.c', | 
 | 196 |     'state_tracker/st_cb_program.c', | 
 | 197 |     'state_tracker/st_cb_queryobj.c', | 
 | 198 |     'state_tracker/st_cb_rasterpos.c', | 
 | 199 |     'state_tracker/st_cb_readpixels.c', | 
 | 200 |     'state_tracker/st_cb_strings.c', | 
 | 201 |     'state_tracker/st_cb_texture.c', | 
 | 202 |     'state_tracker/st_cb_viewport.c', | 
 | 203 |     'state_tracker/st_cb_xformfb.c', | 
 | 204 |     'state_tracker/st_context.c', | 
 | 205 |     'state_tracker/st_debug.c', | 
 | 206 |     'state_tracker/st_draw.c', | 
 | 207 |     'state_tracker/st_draw_feedback.c', | 
 | 208 |     'state_tracker/st_extensions.c', | 
 | 209 |     'state_tracker/st_format.c', | 
 | 210 |     'state_tracker/st_gen_mipmap.c', | 
 | 211 |     'state_tracker/st_manager.c', | 
 | 212 |     'state_tracker/st_mesa_to_tgsi.c', | 
 | 213 |     'state_tracker/st_program.c', | 
 | 214 |     'state_tracker/st_texture.c', | 
 | 215 | ] | 
 | 216 |  | 
 | 217 | program_sources = [ | 
 | 218 |     'program/arbprogparse.c', | 
 | 219 |     'program/hash_table.c', | 
 | 220 |     'program/ir_to_mesa.cpp', | 
 | 221 |     'program/lex.yy.c', | 
 | 222 |     'program/nvfragparse.c', | 
 | 223 |     'program/nvvertparse.c', | 
 | 224 |     'program/program.c', | 
 | 225 |     'program/program_parse.tab.c', | 
 | 226 |     'program/program_parse_extra.c', | 
 | 227 |     'program/prog_cache.c', | 
 | 228 |     'program/prog_execute.c', | 
 | 229 |     'program/prog_instruction.c', | 
 | 230 |     'program/prog_noise.c', | 
 | 231 |     'program/prog_optimize.c', | 
 | 232 |     'program/prog_parameter.c', | 
 | 233 |     'program/prog_parameter_layout.c', | 
 | 234 |     'program/prog_print.c', | 
 | 235 |     'program/prog_statevars.c', | 
 | 236 |     'program/prog_uniform.c', | 
 | 237 |     'program/programopt.c', | 
 | 238 |     'program/sampler.cpp', | 
 | 239 |     'program/symbol_table.c', | 
 | 240 | ] | 
 | 241 |  | 
 | 242 | mesa_sources = ( | 
 | 243 |     main_sources + | 
 | 244 |     math_sources + | 
 | 245 |     program_sources + | 
 | 246 |     vbo_sources + | 
 | 247 |     vf_sources + | 
 | 248 |     statetracker_sources | 
 | 249 | ) | 
 | 250 |  | 
| Chia-I Wu | bb770af | 2011-01-14 17:50:29 +0800 | [diff] [blame] | 251 | if env['gles']: | 
 | 252 |     from sys import executable as python_cmd | 
 | 253 |  | 
 | 254 |     env.Append(CPPDEFINES = ['FEATURE_ES1=1', 'FEATURE_ES2=1']) | 
 | 255 |  | 
 | 256 |     # generate GLES sources | 
 | 257 |     gles_sources = [] | 
 | 258 |     gles_sources += env.CodeGenerate( | 
 | 259 |         target = 'main/api_exec_es1.c', | 
 | 260 |         script = 'main/es_generator.py', | 
 | 261 |         source = 'main/APIspec.xml', | 
 | 262 |         command = python_cmd + ' $SCRIPT -S $SOURCE -V GLES1.1 > $TARGET' | 
 | 263 |     ) | 
 | 264 |     gles_sources += env.CodeGenerate( | 
 | 265 |         target = 'main/api_exec_es2.c', | 
 | 266 |         script = 'main/es_generator.py', | 
 | 267 |         source = 'main/APIspec.xml', | 
 | 268 |         command = python_cmd + ' $SCRIPT -S $SOURCE -V GLES2.0 > $TARGET' | 
 | 269 |     ) | 
 | 270 |  | 
 | 271 |     # generate GLES headers | 
 | 272 |     GLAPI = '#src/mapi/glapi/' | 
 | 273 |     gles_headers = [] | 
 | 274 |     gles_headers += env.CodeGenerate( | 
 | 275 |         target = 'es1api/main/glapidispatch.h', | 
 | 276 |         script = GLAPI + 'gen/gl_table.py', | 
 | 277 |         source = GLAPI + 'gen-es/es1_API.xml', | 
 | 278 |         command = python_cmd + ' $SCRIPT -c -m remap_table -f $SOURCE > $TARGET', | 
 | 279 |     ) | 
 | 280 |     gles_headers += env.CodeGenerate( | 
 | 281 |         target = 'es1api/main/remap_helper.h', | 
 | 282 |         script = GLAPI + 'gen/remap_helper.py', | 
 | 283 |         source = GLAPI + 'gen-es/es1_API.xml', | 
 | 284 |         command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET', | 
 | 285 |     ) | 
 | 286 |     gles_headers += env.CodeGenerate( | 
 | 287 |         target = 'es2api/main/glapidispatch.h', | 
 | 288 |         script = GLAPI + 'gen/gl_table.py', | 
 | 289 |         source = GLAPI + 'gen-es/es2_API.xml', | 
 | 290 |         command = python_cmd + ' $SCRIPT -c -m remap_table -f $SOURCE > $TARGET', | 
 | 291 |     ) | 
 | 292 |     gles_headers += env.CodeGenerate( | 
 | 293 |         target = 'es2api/main/remap_helper.h', | 
 | 294 |         script = GLAPI + 'gen/remap_helper.py', | 
 | 295 |         source = GLAPI + 'gen-es/es2_API.xml', | 
 | 296 |         command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET', | 
 | 297 |     ) | 
 | 298 |  | 
 | 299 |     env.Depends(gles_sources, gles_headers) | 
 | 300 |  | 
 | 301 |     # gles_sources #include gles_headers with full path | 
 | 302 |     env.Append(CPPPATH = [gles_headers[0].dir.up().up()]) | 
 | 303 |  | 
 | 304 |     mesa_sources += gles_sources | 
 | 305 |  | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 306 | # | 
 | 307 | # Assembly sources | 
 | 308 | # | 
| José Fonseca | f9156eb | 2010-11-01 13:56:16 +0000 | [diff] [blame] | 309 | if env['gcc'] and env['platform'] != 'windows': | 
 | 310 |     if env['machine'] == 'x86': | 
 | 311 |         env.Append(CPPDEFINES = [ | 
 | 312 |             'USE_X86_ASM', | 
 | 313 |             'USE_MMX_ASM', | 
 | 314 |             'USE_3DNOW_ASM', | 
 | 315 |             'USE_SSE_ASM', | 
 | 316 |         ]) | 
 | 317 |         mesa_sources += [ | 
 | 318 |             'x86/common_x86.c', | 
 | 319 |             'x86/x86_xform.c', | 
 | 320 |             'x86/3dnow.c', | 
 | 321 |             'x86/sse.c', | 
 | 322 |             'x86/common_x86_asm.S', | 
 | 323 |             'x86/x86_xform2.S', | 
 | 324 |             'x86/x86_xform3.S', | 
 | 325 |             'x86/x86_xform4.S', | 
 | 326 |             'x86/x86_cliptest.S', | 
 | 327 |             'x86/mmx_blend.S', | 
 | 328 |             'x86/3dnow_xform1.S', | 
 | 329 |             'x86/3dnow_xform2.S', | 
 | 330 |             'x86/3dnow_xform3.S', | 
 | 331 |             'x86/3dnow_xform4.S', | 
 | 332 |             'x86/3dnow_normal.S', | 
 | 333 |             'x86/sse_xform1.S', | 
 | 334 |             'x86/sse_xform2.S', | 
 | 335 |             'x86/sse_xform3.S', | 
 | 336 |             'x86/sse_xform4.S', | 
 | 337 |             'x86/sse_normal.S', | 
 | 338 |             'x86/read_rgba_span_x86.S', | 
 | 339 |         ] | 
 | 340 |     elif env['machine'] == 'x86_64': | 
 | 341 |         env.Append(CPPDEFINES = [ | 
 | 342 |             'USE_X86_64_ASM', | 
 | 343 |         ]) | 
 | 344 |         mesa_sources += [ | 
 | 345 |             'x86-64/x86-64.c', | 
 | 346 |             'x86-64/xform4.S', | 
 | 347 |         ] | 
 | 348 |     elif env['machine'] == 'ppc': | 
 | 349 |         env.Append(CPPDEFINES = [ | 
 | 350 |             'USE_PPC_ASM', | 
 | 351 |             'USE_VMX_ASM', | 
 | 352 |         ]) | 
 | 353 |         mesa_sources += [ | 
 | 354 |             'ppc/common_ppc.c', | 
 | 355 |         ] | 
 | 356 |     elif env['machine'] == 'sparc': | 
 | 357 |         mesa_sources += [ | 
 | 358 |             'sparc/sparc.c', | 
 | 359 |             'sparc/clip.S', | 
 | 360 |             'sparc/norm.S', | 
 | 361 |             'sparc/xform.S', | 
 | 362 |         ] | 
 | 363 |     else: | 
 | 364 |         pass | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 365 |  | 
| José Fonseca | f9156eb | 2010-11-01 13:56:16 +0000 | [diff] [blame] | 366 |     # Generate matypes.h | 
 | 367 |     if env['machine'] in ('x86', 'x86_64'): | 
 | 368 |         # See http://www.scons.org/wiki/UsingCodeGenerators | 
 | 369 |         gen_matypes = env.Program( | 
 | 370 |             target = 'gen_matypes', | 
 | 371 |             source = 'x86/gen_matypes.c', | 
 | 372 |         ) | 
 | 373 |         matypes = env.Command( | 
 | 374 |             'matypes.h', | 
 | 375 |             gen_matypes, | 
 | 376 |             gen_matypes[0].abspath + ' > $TARGET', | 
 | 377 |         ) | 
 | 378 |         # Add the dir containing the generated header (somewhere inside  the | 
 | 379 |         # build dir) to the include path | 
 | 380 |         env.Append(CPPPATH = [matypes[0].dir]) | 
| José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 381 |  | 
 | 382 | # | 
 | 383 | # Libraries | 
 | 384 | # | 
 | 385 |  | 
 | 386 | mesa = env.ConvenienceLibrary( | 
 | 387 |     target = 'mesa', | 
 | 388 |     source = mesa_sources, | 
 | 389 | ) | 
 | 390 |  | 
 | 391 | env.Alias('mesa', mesa) | 
 | 392 |  | 
 | 393 | Export('mesa') |