SConscript revision 1.1.1.2 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