Home | History | Annotate | Line # | Download | only in mesa
      1      1.1  mrg #######################################################################
      2      1.1  mrg # SConscript for Mesa
      3      1.1  mrg 
      4      1.1  mrg 
      5      1.1  mrg Import('*')
      6      1.1  mrg from sys import executable as python_cmd
      7      1.1  mrg 
      8      1.1  mrg env = env.Clone()
      9      1.1  mrg 
     10  1.1.1.2  mrg env.MSVC2013Compat()
     11  1.1.1.2  mrg 
     12      1.1  mrg env.Append(CPPPATH = [
     13  1.1.1.2  mrg     '../compiler/nir',  # for generated nir_opcodes.h, etc
     14  1.1.1.2  mrg     '../compiler/glsl',  # for generated headers
     15      1.1  mrg     '#/src',
     16      1.1  mrg     Dir('../mapi'), # src/mapi build path
     17  1.1.1.2  mrg     '#/src/mapi',
     18      1.1  mrg     Dir('.'), # src/mesa build path
     19  1.1.1.2  mrg     '#/src/mesa',
     20  1.1.1.2  mrg     Dir('main'),  # src/mesa/main/ build path
     21  1.1.1.2  mrg     '#/src/mesa/main',
     22  1.1.1.2  mrg     '#/src/gallium/include',
     23  1.1.1.2  mrg     '#/src/gallium/auxiliary',
     24      1.1  mrg ])
     25      1.1  mrg 
     26      1.1  mrg if env['platform'] == 'windows':
     27      1.1  mrg     env.Append(CPPDEFINES = [
     28      1.1  mrg         '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
     29      1.1  mrg         'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
     30  1.1.1.2  mrg         '_GLAPI_NO_EXPORTS', # prevent _glapi_* from being declared __declspec(dllimport)
     31      1.1  mrg     ])
     32      1.1  mrg 
     33      1.1  mrg # parse Makefile.sources
     34      1.1  mrg source_lists = env.ParseSourceList('Makefile.sources')
     35      1.1  mrg 
     36  1.1.1.2  mrg env.Append(YACCFLAGS = ['-d', '-p', '_mesa_program_'])
     37  1.1.1.2  mrg env.CFile('program/lex.yy.c', 'program/program_lexer.l')
     38  1.1.1.2  mrg env.CFile('program/program_parse.tab.c', 'program/program_parse.y')
     39      1.1  mrg 
     40      1.1  mrg mesa_sources = (
     41      1.1  mrg     source_lists['MESA_FILES'] +
     42  1.1.1.2  mrg     source_lists['PROGRAM_FILES'] +
     43  1.1.1.2  mrg     source_lists['PROGRAM_NIR_FILES'] +
     44      1.1  mrg     source_lists['STATETRACKER_FILES']
     45      1.1  mrg )
     46      1.1  mrg 
     47      1.1  mrg GLAPI = '#src/mapi/glapi/'
     48      1.1  mrg 
     49      1.1  mrg get_hash_header = env.CodeGenerate(
     50      1.1  mrg       target = 'main/get_hash.h',
     51      1.1  mrg       script = 'main/get_hash_generator.py',
     52  1.1.1.2  mrg       source = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml'),
     53      1.1  mrg       command = python_cmd + ' $SCRIPT ' + ' -f $SOURCE > $TARGET'
     54      1.1  mrg )
     55      1.1  mrg 
     56      1.1  mrg format_info = env.CodeGenerate(
     57  1.1.1.2  mrg       target = 'main/format_info.h',
     58      1.1  mrg       script = 'main/format_info.py',
     59      1.1  mrg       source = 'main/formats.csv',
     60      1.1  mrg       command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET'
     61      1.1  mrg )
     62      1.1  mrg 
     63  1.1.1.2  mrg format_pack = env.CodeGenerate(
     64  1.1.1.2  mrg       target = 'main/format_pack.c',
     65  1.1.1.2  mrg       script = 'main/format_pack.py',
     66  1.1.1.2  mrg       source = 'main/formats.csv',
     67  1.1.1.2  mrg       command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET'
     68  1.1.1.2  mrg )
     69  1.1.1.2  mrg 
     70  1.1.1.2  mrg format_unpack = env.CodeGenerate(
     71  1.1.1.2  mrg       target = 'main/format_unpack.c',
     72  1.1.1.2  mrg       script = 'main/format_unpack.py',
     73  1.1.1.2  mrg       source = 'main/formats.csv',
     74  1.1.1.2  mrg       command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET'
     75  1.1.1.2  mrg )
     76  1.1.1.2  mrg 
     77  1.1.1.2  mrg format_fallback = env.CodeGenerate(
     78  1.1.1.2  mrg       target = 'main/format_fallback.c',
     79  1.1.1.2  mrg       script = 'main/format_fallback.py',
     80  1.1.1.2  mrg       source = 'main/formats.csv',
     81  1.1.1.2  mrg       command = python_cmd + ' $SCRIPT ' + ' $SOURCE ' + ' $TARGET'
     82  1.1.1.2  mrg )
     83  1.1.1.2  mrg 
     84      1.1  mrg #
     85      1.1  mrg # Assembly sources
     86      1.1  mrg #
     87  1.1.1.2  mrg if env['platform'] not in ('cygwin', 'darwin', 'windows', 'haiku'):
     88      1.1  mrg     if env['machine'] == 'x86':
     89      1.1  mrg         env.Append(CPPDEFINES = [
     90      1.1  mrg             'USE_X86_ASM',
     91      1.1  mrg             'USE_MMX_ASM',
     92      1.1  mrg             'USE_3DNOW_ASM',
     93      1.1  mrg             'USE_SSE_ASM',
     94      1.1  mrg         ])
     95      1.1  mrg         mesa_sources += source_lists['X86_FILES']
     96      1.1  mrg     elif env['machine'] == 'x86_64':
     97      1.1  mrg         env.Append(CPPDEFINES = [
     98      1.1  mrg             'USE_X86_64_ASM',
     99      1.1  mrg         ])
    100      1.1  mrg         mesa_sources += source_lists['X86_64_FILES']
    101      1.1  mrg     elif env['machine'] == 'sparc':
    102      1.1  mrg         mesa_sources += source_lists['SPARC_FILES']
    103      1.1  mrg     else:
    104      1.1  mrg         pass
    105      1.1  mrg 
    106      1.1  mrg     # Generate matypes.h
    107      1.1  mrg     if env['machine'] in ('x86', 'x86_64'):
    108      1.1  mrg         # See http://www.scons.org/wiki/UsingCodeGenerators
    109      1.1  mrg         gen_matypes = env.Program(
    110      1.1  mrg             target = 'gen_matypes',
    111      1.1  mrg             source = 'x86/gen_matypes.c',
    112      1.1  mrg         )
    113      1.1  mrg         matypes = env.Command(
    114      1.1  mrg             'matypes.h',
    115      1.1  mrg             gen_matypes,
    116      1.1  mrg             gen_matypes[0].abspath + ' > $TARGET',
    117      1.1  mrg         )
    118      1.1  mrg         # Add the dir containing the generated header (somewhere inside  the
    119      1.1  mrg         # build dir) to the include path
    120  1.1.1.2  mrg         env.Prepend(CPPPATH = [matypes[0].dir])
    121      1.1  mrg 
    122      1.1  mrg 
    123  1.1.1.2  mrg # The marshal_generated.c file is generated from the GL/ES API.xml file
    124  1.1.1.2  mrg env.CodeGenerate(
    125  1.1.1.2  mrg     target = 'main/marshal_generated.c',
    126  1.1.1.2  mrg     script = GLAPI + 'gen/gl_marshal.py',
    127  1.1.1.2  mrg     source = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml'),
    128  1.1.1.2  mrg     command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
    129  1.1.1.2  mrg     )
    130  1.1.1.2  mrg 
    131  1.1.1.2  mrg # The marshal_generated.h file is generated from the GL/ES API.xml file
    132  1.1.1.2  mrg env.CodeGenerate(
    133  1.1.1.2  mrg     target = 'main/marshal_generated.h',
    134  1.1.1.2  mrg     script = GLAPI + 'gen/gl_marshal_h.py',
    135  1.1.1.2  mrg     source = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml'),
    136  1.1.1.2  mrg     command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
    137  1.1.1.2  mrg     )
    138      1.1  mrg 
    139      1.1  mrg #
    140      1.1  mrg # Libraries
    141      1.1  mrg #
    142      1.1  mrg 
    143      1.1  mrg mesa = env.ConvenienceLibrary(
    144      1.1  mrg     target = 'mesa',
    145      1.1  mrg     source = mesa_sources,
    146      1.1  mrg )
    147      1.1  mrg 
    148      1.1  mrg env.Alias('mesa', mesa)
    149      1.1  mrg 
    150      1.1  mrg Export('mesa')
    151      1.1  mrg 
    152      1.1  mrg SConscript('drivers/SConscript')
    153