diff options
Diffstat (limited to 'SConstruct')
-rw-r--r-- | SConstruct | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/SConstruct b/SConstruct new file mode 100644 index 0000000000..c1dc624651 --- /dev/null +++ b/SConstruct @@ -0,0 +1,165 @@ +####################################################################### +# Top-level SConstruct +# +# For example, invoke scons as +# +# scons debug=1 dri=0 machine=x86 +# +# to set configuration variables. Or you can write those options to a file +# named config.py: +# +# # config.py +# debug=1 +# dri=0 +# machine='x86' +# +# Invoke +# +# scons -h +# +# to get the full list of options. See scons manpage for more info. +# + +import os +import os.path +import sys + +import common + +####################################################################### +# Configuration options + +default_statetrackers = 'mesa' + +if common.default_platform in ('linux', 'freebsd', 'darwin'): + default_drivers = 'softpipe,failover,i915simple,i965simple,trace' + default_winsys = 'xlib' +elif common.default_platform in ('winddk',): + default_drivers = 'softpipe,i915simple,trace' + default_winsys = 'all' +else: + default_drivers = 'all' + default_winsys = 'all' + +opts = Options('config.py') +common.AddOptions(opts) +opts.Add(ListOption('statetrackers', 'state trackers to build', default_statetrackers, + ['mesa', 'python'])) +opts.Add(ListOption('drivers', 'pipe drivers to build', default_drivers, + ['softpipe', 'failover', 'i915simple', 'i965simple', 'cell', 'trace'])) +opts.Add(ListOption('winsys', 'winsys drivers to build', default_winsys, + ['xlib', 'intel', 'gdi'])) + +opts.Add(EnumOption('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0'))) + +env = Environment( + options = opts, + tools = ['gallium'], + toolpath = ['#scons'], + ENV = os.environ, +) + +Help(opts.GenerateHelpText(env)) + +# replicate options values in local variables +debug = env['debug'] +dri = env['dri'] +llvm = env['llvm'] +machine = env['machine'] +platform = env['platform'] + +# derived options +x86 = machine == 'x86' +gcc = platform in ('linux', 'freebsd', 'darwin') +msvc = platform in ('windows', 'winddk') + +Export([ + 'debug', + 'x86', + 'dri', + 'llvm', + 'platform', + 'gcc', + 'msvc', +]) + + +####################################################################### +# Environment setup + +# Includes +env.Append(CPPPATH = [ + '#/include', + '#/src/gallium/include', + '#/src/gallium/auxiliary', + '#/src/gallium/drivers', +]) + + +# Posix +if platform in ('posix', 'linux', 'freebsd', 'darwin'): + env.Append(CPPDEFINES = [ + '_POSIX_SOURCE', + ('_POSIX_C_SOURCE', '199309L'), + '_SVID_SOURCE', + '_BSD_SOURCE', + '_GNU_SOURCE', + + 'PTHREADS', + 'HAVE_POSIX_MEMALIGN', + ]) + env.Append(CPPPATH = ['/usr/X11R6/include']) + env.Append(LIBPATH = ['/usr/X11R6/lib']) + env.Append(LIBS = [ + 'm', + 'pthread', + 'expat', + 'dl', + ]) + + +# DRI +if dri: + env.ParseConfig('pkg-config --cflags --libs libdrm') + env.Append(CPPDEFINES = [ + ('USE_EXTERNAL_DXTN_LIB', '1'), + 'IN_DRI_DRIVER', + 'GLX_DIRECT_RENDERING', + 'GLX_INDIRECT_RENDERING', + ]) + +# LLVM +if llvm: + # See also http://www.scons.org/wiki/UsingPkgConfig + env.ParseConfig('llvm-config --cflags --ldflags --libs') + env.Append(CPPDEFINES = ['MESA_LLVM']) + # Force C++ linkage + env['LINK'] = env['CXX'] + +# libGL +if platform in ('linux', 'freebsd', 'darwin'): + env.Append(LIBS = [ + 'X11', + 'Xext', + 'Xxf86vm', + 'Xdamage', + 'Xfixes', + ]) + +# for debugging +#print env.Dump() + +Export('env') + + +####################################################################### +# Invoke SConscripts + +# TODO: Build several variants at the same time? +# http://www.scons.org/wiki/SimultaneousVariantBuilds + +SConscript( + 'src/SConscript', + build_dir = env['build'], + duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html +) |