SConscript revision b8e80941
1848b8605Smrg#######################################################################
2848b8605Smrg# SConscript for Mesa
3848b8605Smrg
4848b8605Smrg
5848b8605SmrgImport('*')
6848b8605Smrgfrom sys import executable as python_cmd
7848b8605Smrg
8848b8605Smrgenv = env.Clone()
9848b8605Smrg
10b8e80941Smrgenv.MSVC2013Compat()
11b8e80941Smrg
12848b8605Smrgenv.Append(CPPPATH = [
13b8e80941Smrg    '../compiler/nir',  # for generated nir_opcodes.h, etc
14b8e80941Smrg    '../compiler/glsl',  # for generated headers
15848b8605Smrg    '#/src',
16848b8605Smrg    Dir('../mapi'), # src/mapi build path
17b8e80941Smrg    '#/src/mapi',
18848b8605Smrg    Dir('.'), # src/mesa build path
19b8e80941Smrg    '#/src/mesa',
20b8e80941Smrg    Dir('main'),  # src/mesa/main/ build path
21b8e80941Smrg    '#/src/mesa/main',
22b8e80941Smrg    '#/src/gallium/include',
23b8e80941Smrg    '#/src/gallium/auxiliary',
24848b8605Smrg])
25848b8605Smrg
26848b8605Smrgif env['platform'] == 'windows':
27848b8605Smrg    env.Append(CPPDEFINES = [
28848b8605Smrg        '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
29848b8605Smrg        'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
30b8e80941Smrg        '_GLAPI_NO_EXPORTS', # prevent _glapi_* from being declared __declspec(dllimport)
31848b8605Smrg    ])
32848b8605Smrg
33848b8605Smrg# parse Makefile.sources
34848b8605Smrgsource_lists = env.ParseSourceList('Makefile.sources')
35848b8605Smrg
36b8e80941Smrgenv.Append(YACCFLAGS = ['-d', '-p', '_mesa_program_'])
37b8e80941Smrgenv.CFile('program/lex.yy.c', 'program/program_lexer.l')
38b8e80941Smrgenv.CFile('program/program_parse.tab.c', 'program/program_parse.y')
39848b8605Smrg
40848b8605Smrgmesa_sources = (
41848b8605Smrg    source_lists['MESA_FILES'] +
42b8e80941Smrg    source_lists['PROGRAM_FILES'] +
43b8e80941Smrg    source_lists['PROGRAM_NIR_FILES'] +
44848b8605Smrg    source_lists['STATETRACKER_FILES']
45848b8605Smrg)
46848b8605Smrg
47848b8605SmrgGLAPI = '#src/mapi/glapi/'
48848b8605Smrg
49848b8605Smrgget_hash_header = env.CodeGenerate(
50848b8605Smrg      target = 'main/get_hash.h',
51848b8605Smrg      script = 'main/get_hash_generator.py',
52b8e80941Smrg      source = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml'),
53848b8605Smrg      command = python_cmd + ' $SCRIPT ' + ' -f $SOURCE > $TARGET'
54848b8605Smrg)
55848b8605Smrg
56848b8605Smrgformat_info = env.CodeGenerate(
57b8e80941Smrg      target = 'main/format_info.h',
58848b8605Smrg      script = 'main/format_info.py',
59848b8605Smrg      source = 'main/formats.csv',
60848b8605Smrg      command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET'
61848b8605Smrg)
62848b8605Smrg
63b8e80941Smrgformat_pack = env.CodeGenerate(
64b8e80941Smrg      target = 'main/format_pack.c',
65b8e80941Smrg      script = 'main/format_pack.py',
66b8e80941Smrg      source = 'main/formats.csv',
67b8e80941Smrg      command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET'
68b8e80941Smrg)
69b8e80941Smrg
70b8e80941Smrgformat_unpack = env.CodeGenerate(
71b8e80941Smrg      target = 'main/format_unpack.c',
72b8e80941Smrg      script = 'main/format_unpack.py',
73b8e80941Smrg      source = 'main/formats.csv',
74b8e80941Smrg      command = python_cmd + ' $SCRIPT ' + ' $SOURCE > $TARGET'
75b8e80941Smrg)
76b8e80941Smrg
77b8e80941Smrgformat_fallback = env.CodeGenerate(
78b8e80941Smrg      target = 'main/format_fallback.c',
79b8e80941Smrg      script = 'main/format_fallback.py',
80b8e80941Smrg      source = 'main/formats.csv',
81b8e80941Smrg      command = python_cmd + ' $SCRIPT ' + ' $SOURCE ' + ' $TARGET'
82b8e80941Smrg)
83b8e80941Smrg
84848b8605Smrg#
85848b8605Smrg# Assembly sources
86848b8605Smrg#
87b8e80941Smrgif env['platform'] not in ('cygwin', 'darwin', 'windows', 'haiku'):
88848b8605Smrg    if env['machine'] == 'x86':
89848b8605Smrg        env.Append(CPPDEFINES = [
90848b8605Smrg            'USE_X86_ASM',
91848b8605Smrg            'USE_MMX_ASM',
92848b8605Smrg            'USE_3DNOW_ASM',
93848b8605Smrg            'USE_SSE_ASM',
94848b8605Smrg        ])
95848b8605Smrg        mesa_sources += source_lists['X86_FILES']
96848b8605Smrg    elif env['machine'] == 'x86_64':
97848b8605Smrg        env.Append(CPPDEFINES = [
98848b8605Smrg            'USE_X86_64_ASM',
99848b8605Smrg        ])
100848b8605Smrg        mesa_sources += source_lists['X86_64_FILES']
101848b8605Smrg    elif env['machine'] == 'sparc':
102848b8605Smrg        mesa_sources += source_lists['SPARC_FILES']
103848b8605Smrg    else:
104848b8605Smrg        pass
105848b8605Smrg
106848b8605Smrg    # Generate matypes.h
107848b8605Smrg    if env['machine'] in ('x86', 'x86_64'):
108848b8605Smrg        # See http://www.scons.org/wiki/UsingCodeGenerators
109848b8605Smrg        gen_matypes = env.Program(
110848b8605Smrg            target = 'gen_matypes',
111848b8605Smrg            source = 'x86/gen_matypes.c',
112848b8605Smrg        )
113848b8605Smrg        matypes = env.Command(
114848b8605Smrg            'matypes.h',
115848b8605Smrg            gen_matypes,
116848b8605Smrg            gen_matypes[0].abspath + ' > $TARGET',
117848b8605Smrg        )
118848b8605Smrg        # Add the dir containing the generated header (somewhere inside  the
119848b8605Smrg        # build dir) to the include path
120b8e80941Smrg        env.Prepend(CPPPATH = [matypes[0].dir])
121b8e80941Smrg
122b8e80941Smrg
123b8e80941Smrg# The marshal_generated.c file is generated from the GL/ES API.xml file
124b8e80941Smrgenv.CodeGenerate(
125b8e80941Smrg    target = 'main/marshal_generated.c',
126b8e80941Smrg    script = GLAPI + 'gen/gl_marshal.py',
127b8e80941Smrg    source = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml'),
128b8e80941Smrg    command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
129b8e80941Smrg    )
130b8e80941Smrg
131b8e80941Smrg# The marshal_generated.h file is generated from the GL/ES API.xml file
132b8e80941Smrgenv.CodeGenerate(
133b8e80941Smrg    target = 'main/marshal_generated.h',
134b8e80941Smrg    script = GLAPI + 'gen/gl_marshal_h.py',
135b8e80941Smrg    source = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml'),
136b8e80941Smrg    command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
137b8e80941Smrg    )
138848b8605Smrg
139848b8605Smrg#
140848b8605Smrg# Libraries
141848b8605Smrg#
142848b8605Smrg
143848b8605Smrgmesa = env.ConvenienceLibrary(
144848b8605Smrg    target = 'mesa',
145848b8605Smrg    source = mesa_sources,
146848b8605Smrg)
147848b8605Smrg
148848b8605Smrgenv.Alias('mesa', mesa)
149848b8605Smrg
150848b8605SmrgExport('mesa')
151848b8605Smrg
152848b8605SmrgSConscript('drivers/SConscript')
153