| ####################################################################### |
| # SConscript for Mesa |
| |
| |
| Import('*') |
| from sys import executable as python_cmd |
| |
| env = env.Clone() |
| |
| env.MSVC2013Compat() |
| |
| env.Append(CPPPATH = [ |
| '../compiler/nir', # for generated nir_opcodes.h, etc |
| '#/src', |
| Dir('../mapi'), # src/mapi build path |
| '#/src/mapi', |
| Dir('.'), # src/mesa build path |
| '#/src/mesa', |
| Dir('main'), # src/mesa/main/ build path |
| '#/src/mesa/main', |
| '#/src/gallium/include', |
| '#/src/gallium/auxiliary', |
| ]) |
| |
| if env['platform'] == 'windows': |
| env.Append(CPPDEFINES = [ |
| '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers |
| 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers |
| ]) |
| if not env['gles']: |
| # prevent _glapi_* from being declared __declspec(dllimport) |
| env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS']) |
| else: |
| env.Append(CPPDEFINES = [ |
| ('HAVE_DLOPEN', '1'), |
| ]) |
| |
| # parse Makefile.sources |
| source_lists = env.ParseSourceList('Makefile.sources') |
| |
| env.Append(YACCFLAGS = ['-d', '-p', '_mesa_program_']) |
| env.CFile('program/lex.yy.c', 'program/program_lexer.l') |
| env.CFile('program/program_parse.tab.c', 'program/program_parse.y') |
| |
| mesa_sources = ( |
| source_lists['MESA_FILES'] + |
| source_lists['PROGRAM_FILES'] + |
| source_lists['STATETRACKER_FILES'] |
| ) |
| |
| GLAPI = '#src/mapi/glapi/' |
| |
| get_hash_header = env.CodeGenerate( |
| target = 'main/get_hash.h', |
| script = 'main/get_hash_generator.py', |
| source = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml'), |
| command = python_cmd + ' $SCRIPT ' + ' -f $SOURCE > $TARGET' |
| ) |
| |
| format_info = env.CodeGenerate( |
| target = 'main/format_info.h', |
| script = 'main/format_info.py', |
| source = 'main/formats.csv', |
| command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET' |
| ) |
| |
| format_pack = env.CodeGenerate( |
| target = 'main/format_pack.c', |
| script = 'main/format_pack.py', |
| source = 'main/formats.csv', |
| command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET' |
| ) |
| |
| format_unpack = env.CodeGenerate( |
| target = 'main/format_unpack.c', |
| script = 'main/format_unpack.py', |
| source = 'main/formats.csv', |
| command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET' |
| ) |
| |
| # |
| # Assembly sources |
| # |
| if env['platform'] not in ('cygwin', 'darwin', 'windows', 'haiku'): |
| if env['machine'] == 'x86': |
| env.Append(CPPDEFINES = [ |
| 'USE_X86_ASM', |
| 'USE_MMX_ASM', |
| 'USE_3DNOW_ASM', |
| 'USE_SSE_ASM', |
| ]) |
| mesa_sources += source_lists['X86_FILES'] |
| elif env['machine'] == 'x86_64': |
| env.Append(CPPDEFINES = [ |
| 'USE_X86_64_ASM', |
| ]) |
| mesa_sources += source_lists['X86_64_FILES'] |
| elif env['machine'] == 'sparc': |
| mesa_sources += source_lists['SPARC_FILES'] |
| else: |
| pass |
| |
| # Generate matypes.h |
| if env['machine'] in ('x86', 'x86_64'): |
| # See http://www.scons.org/wiki/UsingCodeGenerators |
| gen_matypes = env.Program( |
| target = 'gen_matypes', |
| source = 'x86/gen_matypes.c', |
| ) |
| matypes = env.Command( |
| 'matypes.h', |
| gen_matypes, |
| gen_matypes[0].abspath + ' > $TARGET', |
| ) |
| # Add the dir containing the generated header (somewhere inside the |
| # build dir) to the include path |
| env.Prepend(CPPPATH = [matypes[0].dir]) |
| |
| |
| # |
| # Libraries |
| # |
| |
| mesa = env.ConvenienceLibrary( |
| target = 'mesa', |
| source = mesa_sources, |
| ) |
| |
| env.Alias('mesa', mesa) |
| |
| Export('mesa') |
| |
| SConscript('drivers/SConscript') |