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