SConstruct revision d57ba16ae3943a93071ef1bbab4a13725b8ea20c
1####################################################################### 2# Top-level SConstruct 3# 4# For example, invoke scons as 5# 6# scons debug=1 dri=0 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# debug=1 13# dri=0 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 23import os 24import os.path 25import sys 26 27import common 28 29####################################################################### 30# Configuration options 31 32default_statetrackers = 'mesa' 33 34if common.default_platform in ('linux', 'freebsd', 'darwin'): 35 default_drivers = 'softpipe,failover,svga,i915,trace,identity,llvmpipe' 36 default_winsys = 'xlib' 37elif common.default_platform in ('winddk',): 38 default_drivers = 'softpipe,svga,i915,trace,identity' 39 default_winsys = 'all' 40else: 41 default_drivers = 'all' 42 default_winsys = 'all' 43 44opts = Variables('config.py') 45common.AddOptions(opts) 46opts.Add(ListVariable('statetrackers', 'state trackers to build', default_statetrackers, 47 ['mesa', 'python', 'xorg'])) 48opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers, 49 ['softpipe', 'failover', 'svga', 'i915', 'cell', 'trace', 'r300', 'identity', 'llvmpipe'])) 50opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys, 51 ['xlib', 'vmware', 'intel', 'gdi', 'radeon'])) 52 53opts.Add(EnumVariable('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0'))) 54 55env = Environment( 56 options = opts, 57 tools = ['gallium'], 58 toolpath = ['#scons'], 59 ENV = os.environ, 60) 61 62Help(opts.GenerateHelpText(env)) 63 64# replicate options values in local variables 65debug = env['debug'] 66dri = env['dri'] 67llvm = env['llvm'] 68machine = env['machine'] 69platform = env['platform'] 70 71# derived options 72x86 = machine == 'x86' 73ppc = machine == 'ppc' 74gcc = platform in ('linux', 'freebsd', 'darwin') 75msvc = platform in ('windows', 'winddk') 76 77Export([ 78 'debug', 79 'x86', 80 'ppc', 81 'dri', 82 'llvm', 83 'platform', 84 'gcc', 85 'msvc', 86]) 87 88 89####################################################################### 90# Environment setup 91 92# Includes 93env.Append(CPPPATH = [ 94 '#/include', 95 '#/src/gallium/include', 96 '#/src/gallium/auxiliary', 97 '#/src/gallium/drivers', 98]) 99 100 101# Posix 102if platform in ('posix', 'linux', 'freebsd', 'darwin'): 103 env.Append(CPPDEFINES = [ 104 '_POSIX_SOURCE', 105 ('_POSIX_C_SOURCE', '199309L'), 106 '_SVID_SOURCE', 107 '_BSD_SOURCE', 108 '_GNU_SOURCE', 109 110 'PTHREADS', 111 'HAVE_POSIX_MEMALIGN', 112 ]) 113 if platform == 'darwin': 114 env.Append(CPPDEFINES = ['_DARWIN_C_SOURCE']) 115 env.Append(CPPPATH = ['/usr/X11R6/include']) 116 env.Append(LIBPATH = ['/usr/X11R6/lib']) 117 env.Append(LIBS = [ 118 'm', 119 'pthread', 120 'expat', 121 'dl', 122 ]) 123 124 125# DRI 126if dri: 127 env.ParseConfig('pkg-config --cflags --libs libdrm') 128 env.Append(CPPDEFINES = [ 129 ('USE_EXTERNAL_DXTN_LIB', '1'), 130 'IN_DRI_DRIVER', 131 'GLX_DIRECT_RENDERING', 132 'GLX_INDIRECT_RENDERING', 133 ]) 134 135# LLVM 136if llvm: 137 # See also http://www.scons.org/wiki/UsingPkgConfig 138 env.ParseConfig('llvm-config --cflags --ldflags --libs backend bitreader engine instrumentation interpreter ipo') 139 env.Append(CPPDEFINES = ['MESA_LLVM']) 140 # Force C++ linkage 141 env['LINK'] = env['CXX'] 142 143# libGL 144if platform in ('linux', 'freebsd', 'darwin'): 145 env.Append(LIBS = [ 146 'X11', 147 'Xext', 148 'Xxf86vm', 149 'Xdamage', 150 'Xfixes', 151 ]) 152 153# for debugging 154#print env.Dump() 155 156Export('env') 157 158 159####################################################################### 160# Invoke SConscripts 161 162# TODO: Build several variants at the same time? 163# http://www.scons.org/wiki/SimultaneousVariantBuilds 164 165SConscript( 166 'src/SConscript', 167 variant_dir = env['build'], 168 duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html 169) 170