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