Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4358 Serge 1
#######################################################################
2
# Top-level SConstruct
3
#
4
# For example, invoke scons as
5
#
6
#   scons build=debug llvm=yes machine=x86
7
#
8
# to set configuration variables. Or you can write those options to a file
9
# named config.py:
10
#
11
#   # config.py
12
#   build='debug'
13
#   llvm=True
14
#   machine='x86'
15
#
16
# Invoke
17
#
18
#   scons -h
19
#
20
# to get the full list of options. See scons manpage for more info.
21
#
22
 
23
import os
24
import os.path
25
import sys
26
import SCons.Util
27
 
28
import common
29
 
30
#######################################################################
31
# Configuration options
32
 
33
opts = Variables('config.py')
34
common.AddOptions(opts)
35
 
36
env = Environment(
37
	options = opts,
38
	tools = ['gallium'],
39
	toolpath = ['#scons'],
40
	ENV = os.environ,
41
)
42
 
43
# XXX: This creates a many problems as it saves...
44
#opts.Save('config.py', env)
45
 
46
# Backwards compatability with old target configuration variable
47
try:
48
    targets = ARGUMENTS['targets']
49
except KeyError:
50
    pass
51
else:
52
    targets = targets.split(',')
53
    print 'scons: warning: targets option is deprecated; pass the targets on their own such as'
54
    print
55
    print '  scons %s' % ' '.join(targets)
56
    print
57
    COMMAND_LINE_TARGETS.append(targets)
58
 
59
 
60
Help(opts.GenerateHelpText(env))
61
 
62
# fail early for a common error on windows
63
if env['gles']:
64
    try:
65
        import libxml2
66
    except ImportError:
67
        raise SCons.Errors.UserError, "GLES requires libxml2-python to build"
68
 
69
#######################################################################
70
# Environment setup
71
 
72
env.Append(CPPDEFINES = [
4401 Serge 73
    ('PACKAGE_VERSION', '\\"9.2.5\\"'),
4358 Serge 74
    ('PACKAGE_BUGREPORT', '\\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\\"'),
75
])
76
 
77
# Includes
78
env.Prepend(CPPPATH = [
79
	'#/include',
80
])
81
env.Append(CPPPATH = [
82
	'#/src/gallium/include',
83
	'#/src/gallium/auxiliary',
84
	'#/src/gallium/drivers',
85
	'#/src/gallium/winsys',
86
])
87
 
88
if env['msvc']:
89
    env.Append(CPPPATH = ['#include/c99'])
90
 
91
# for debugging
92
#print env.Dump()
93
 
94
 
95
#######################################################################
96
# Invoke host SConscripts
97
#
98
# For things that are meant to be run on the native host build machine, instead
99
# of the target machine.
100
#
101
 
102
# Create host environent
103
if env['crosscompile'] and not env['embedded']:
104
    host_env = Environment(
105
        options = opts,
106
        # no tool used
107
        tools = [],
108
        toolpath = ['#scons'],
109
        ENV = os.environ,
110
    )
111
 
112
    # Override options
113
    host_env['platform'] = common.host_platform
114
    host_env['machine'] = common.host_machine
115
    host_env['toolchain'] = 'default'
116
    host_env['llvm'] = False
117
 
118
    host_env.Tool('gallium')
119
 
120
    host_env['hostonly'] = True
121
    assert host_env['crosscompile'] == False
122
 
123
    if host_env['msvc']:
124
        host_env.Append(CPPPATH = ['#include/c99'])
125
 
126
    target_env = env
127
    env = host_env
128
    Export('env')
129
 
130
    SConscript(
131
        'src/SConscript',
132
        variant_dir = host_env['build_dir'],
133
        duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
134
    )
135
 
136
    env = target_env
137
 
138
Export('env')
139
 
140
#######################################################################
141
# Invoke SConscripts
142
 
143
# TODO: Build several variants at the same time?
144
# http://www.scons.org/wiki/SimultaneousVariantBuilds
145
 
146
SConscript(
147
	'src/SConscript',
148
	variant_dir = env['build_dir'],
149
	duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
150
)
151
 
152
 
153
########################################################################
154
# List all aliases
155
 
156
try:
157
    from SCons.Node.Alias import default_ans
158
except ImportError:
159
    pass
160
else:
161
    aliases = default_ans.keys()
162
    aliases.sort()
163
    env.Help('\n')
164
    env.Help('Recognized targets:\n')
165
    for alias in aliases:
166
        env.Help('    %s\n' % alias)