SConstruct revision 848b8605
1848b8605Smrg####################################################################### 2848b8605Smrg# Top-level SConstruct 3848b8605Smrg# 4848b8605Smrg# For example, invoke scons as 5848b8605Smrg# 6848b8605Smrg# scons build=debug llvm=yes machine=x86 7848b8605Smrg# 8848b8605Smrg# to set configuration variables. Or you can write those options to a file 9848b8605Smrg# named config.py: 10848b8605Smrg# 11848b8605Smrg# # config.py 12848b8605Smrg# build='debug' 13848b8605Smrg# llvm=True 14848b8605Smrg# machine='x86' 15848b8605Smrg# 16848b8605Smrg# Invoke 17848b8605Smrg# 18848b8605Smrg# scons -h 19848b8605Smrg# 20848b8605Smrg# to get the full list of options. See scons manpage for more info. 21848b8605Smrg# 22848b8605Smrg 23848b8605Smrgimport os 24848b8605Smrgimport os.path 25848b8605Smrgimport sys 26848b8605Smrgimport SCons.Util 27848b8605Smrg 28848b8605Smrgimport common 29848b8605Smrg 30848b8605Smrg####################################################################### 31848b8605Smrg# Configuration options 32848b8605Smrg 33848b8605Smrgopts = Variables('config.py') 34848b8605Smrgcommon.AddOptions(opts) 35848b8605Smrg 36848b8605Smrgenv = Environment( 37848b8605Smrg options = opts, 38848b8605Smrg tools = ['gallium'], 39848b8605Smrg toolpath = ['#scons'], 40848b8605Smrg ENV = os.environ, 41848b8605Smrg) 42848b8605Smrg 43848b8605Smrg# XXX: This creates a many problems as it saves... 44848b8605Smrg#opts.Save('config.py', env) 45848b8605Smrg 46848b8605Smrg# Backwards compatability with old target configuration variable 47848b8605Smrgtry: 48848b8605Smrg targets = ARGUMENTS['targets'] 49848b8605Smrgexcept KeyError: 50848b8605Smrg pass 51848b8605Smrgelse: 52848b8605Smrg targets = targets.split(',') 53848b8605Smrg print 'scons: warning: targets option is deprecated; pass the targets on their own such as' 54848b8605Smrg print 55848b8605Smrg print ' scons %s' % ' '.join(targets) 56848b8605Smrg print 57848b8605Smrg COMMAND_LINE_TARGETS.append(targets) 58848b8605Smrg 59848b8605Smrg 60848b8605SmrgHelp(opts.GenerateHelpText(env)) 61848b8605Smrg 62848b8605Smrg####################################################################### 63848b8605Smrg# Environment setup 64848b8605Smrg 65848b8605Smrgwith open("VERSION") as f: 66848b8605Smrg mesa_version = f.read().strip() 67848b8605Smrgenv.Append(CPPDEFINES = [ 68848b8605Smrg ('PACKAGE_VERSION', '\\"%s\\"' % mesa_version), 69848b8605Smrg ('PACKAGE_BUGREPORT', '\\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\\"'), 70848b8605Smrg]) 71848b8605Smrg 72848b8605Smrg# Includes 73848b8605Smrgenv.Prepend(CPPPATH = [ 74848b8605Smrg '#/include', 75848b8605Smrg]) 76848b8605Smrgenv.Append(CPPPATH = [ 77848b8605Smrg '#/src/gallium/include', 78848b8605Smrg '#/src/gallium/auxiliary', 79848b8605Smrg '#/src/gallium/drivers', 80848b8605Smrg '#/src/gallium/winsys', 81848b8605Smrg]) 82848b8605Smrg 83848b8605Smrg# for debugging 84848b8605Smrg#print env.Dump() 85848b8605Smrg 86848b8605Smrg 87848b8605Smrg####################################################################### 88848b8605Smrg# Invoke host SConscripts 89848b8605Smrg# 90848b8605Smrg# For things that are meant to be run on the native host build machine, instead 91848b8605Smrg# of the target machine. 92848b8605Smrg# 93848b8605Smrg 94848b8605Smrg# Create host environent 95848b8605Smrgif env['crosscompile'] and not env['embedded']: 96848b8605Smrg host_env = Environment( 97848b8605Smrg options = opts, 98848b8605Smrg # no tool used 99848b8605Smrg tools = [], 100848b8605Smrg toolpath = ['#scons'], 101848b8605Smrg ENV = os.environ, 102848b8605Smrg ) 103848b8605Smrg 104848b8605Smrg # Override options 105848b8605Smrg host_env['platform'] = common.host_platform 106848b8605Smrg host_env['machine'] = common.host_machine 107848b8605Smrg host_env['toolchain'] = 'default' 108848b8605Smrg host_env['llvm'] = False 109848b8605Smrg 110848b8605Smrg host_env.Tool('gallium') 111848b8605Smrg 112848b8605Smrg host_env['hostonly'] = True 113848b8605Smrg assert host_env['crosscompile'] == False 114848b8605Smrg 115848b8605Smrg target_env = env 116848b8605Smrg env = host_env 117848b8605Smrg Export('env') 118848b8605Smrg 119848b8605Smrg SConscript( 120848b8605Smrg 'src/SConscript', 121848b8605Smrg variant_dir = host_env['build_dir'], 122848b8605Smrg duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html 123848b8605Smrg ) 124848b8605Smrg 125848b8605Smrg env = target_env 126848b8605Smrg 127848b8605SmrgExport('env') 128848b8605Smrg 129848b8605Smrg####################################################################### 130848b8605Smrg# Invoke SConscripts 131848b8605Smrg 132848b8605Smrg# TODO: Build several variants at the same time? 133848b8605Smrg# http://www.scons.org/wiki/SimultaneousVariantBuilds 134848b8605Smrg 135848b8605SmrgSConscript( 136848b8605Smrg 'src/SConscript', 137848b8605Smrg variant_dir = env['build_dir'], 138848b8605Smrg duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html 139848b8605Smrg) 140848b8605Smrg 141848b8605Smrg 142848b8605Smrg######################################################################## 143848b8605Smrg# List all aliases 144848b8605Smrg 145848b8605Smrgtry: 146848b8605Smrg from SCons.Node.Alias import default_ans 147848b8605Smrgexcept ImportError: 148848b8605Smrg pass 149848b8605Smrgelse: 150848b8605Smrg aliases = default_ans.keys() 151848b8605Smrg aliases.sort() 152848b8605Smrg env.Help('\n') 153848b8605Smrg env.Help('Recognized targets:\n') 154848b8605Smrg for alias in aliases: 155848b8605Smrg env.Help(' %s\n' % alias) 156