
Keith prefers a clean separation between graw applications and implementations, where apps do not link libgallium.a but instead get all functionality they need via graw interface. Although this is not incompatible with late loading of graw drivers, it it would make it very hard to maintain, as wrappers for every utility symbol exposed in graw would have to be written or generated somehow.
217 lines
5.2 KiB
Python
217 lines
5.2 KiB
Python
#######################################################################
|
|
# 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 SCons.Util
|
|
|
|
import common
|
|
|
|
#######################################################################
|
|
# Configuration options
|
|
|
|
default_statetrackers = 'mesa'
|
|
default_targets = 'graw-null'
|
|
|
|
if common.default_platform in ('linux', 'freebsd', 'darwin'):
|
|
default_drivers = 'softpipe,failover,svga,i915,i965,trace,identity,llvmpipe'
|
|
default_winsys = 'xlib'
|
|
elif common.default_platform in ('winddk',):
|
|
default_drivers = 'softpipe,svga,i915,i965,trace,identity'
|
|
default_winsys = 'all'
|
|
elif common.default_platform in ('embedded',):
|
|
default_drivers = 'softpipe,llvmpipe'
|
|
default_winsys = 'xlib'
|
|
else:
|
|
default_drivers = 'all'
|
|
default_winsys = 'all'
|
|
|
|
opts = Variables('config.py')
|
|
common.AddOptions(opts)
|
|
opts.Add(ListVariable('statetrackers', 'state trackers to build', default_statetrackers,
|
|
['mesa', 'python', 'xorg', 'egl']))
|
|
opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers,
|
|
['softpipe', 'failover', 'svga', 'i915', 'i965', 'trace', 'r300', 'r600', 'identity', 'llvmpipe', 'nouveau', 'nv50', 'nvfx']))
|
|
opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys,
|
|
['xlib', 'vmware', 'i915', 'i965', 'gdi', 'radeon', 'r600', 'graw-xlib']))
|
|
|
|
opts.Add(ListVariable('targets', 'driver targets to build', default_targets,
|
|
['dri-i915',
|
|
'dri-i965',
|
|
'dri-nouveau',
|
|
'dri-radeong',
|
|
'dri-swrast',
|
|
'dri-vmwgfx',
|
|
'egl-i915',
|
|
'egl-i965',
|
|
'egl-nouveau',
|
|
'egl-radeon',
|
|
'egl-swrast',
|
|
'egl-vmwgfx',
|
|
'graw-xlib',
|
|
'graw-null',
|
|
'libgl-gdi',
|
|
'libgl-xlib',
|
|
'xorg-i915',
|
|
'xorg-i965',
|
|
'xorg-nouveau',
|
|
'xorg-radeon',
|
|
'xorg-vmwgfx']))
|
|
|
|
opts.Add(EnumVariable('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,
|
|
)
|
|
|
|
if os.environ.has_key('CC'):
|
|
env['CC'] = os.environ['CC']
|
|
if os.environ.has_key('CFLAGS'):
|
|
env['CCFLAGS'] += SCons.Util.CLVar(os.environ['CFLAGS'])
|
|
if os.environ.has_key('CXX'):
|
|
env['CXX'] = os.environ['CXX']
|
|
if os.environ.has_key('CXXFLAGS'):
|
|
env['CXXFLAGS'] += SCons.Util.CLVar(os.environ['CXXFLAGS'])
|
|
if os.environ.has_key('LDFLAGS'):
|
|
env['LINKFLAGS'] += SCons.Util.CLVar(os.environ['LDFLAGS'])
|
|
|
|
Help(opts.GenerateHelpText(env))
|
|
|
|
# replicate options values in local variables
|
|
debug = env['debug']
|
|
dri = env['dri']
|
|
machine = env['machine']
|
|
platform = env['platform']
|
|
|
|
# derived options
|
|
x86 = machine == 'x86'
|
|
ppc = machine == 'ppc'
|
|
gcc = platform in ('linux', 'freebsd', 'darwin', 'embedded')
|
|
msvc = platform in ('windows', 'winddk')
|
|
|
|
Export([
|
|
'debug',
|
|
'x86',
|
|
'ppc',
|
|
'dri',
|
|
'platform',
|
|
'gcc',
|
|
'msvc',
|
|
])
|
|
|
|
|
|
#######################################################################
|
|
# Environment setup
|
|
|
|
# Always build trace, rbug, identity, softpipe, and llvmpipe (where possible)
|
|
if 'trace' not in env['drivers']:
|
|
env['drivers'].append('trace')
|
|
if 'rbug' not in env['drivers']:
|
|
env['drivers'].append('rbug')
|
|
if 'galahad' not in env['drivers']:
|
|
env['drivers'].append('galahad')
|
|
if 'identity' not in env['drivers']:
|
|
env['drivers'].append('identity')
|
|
if 'softpipe' not in env['drivers']:
|
|
env['drivers'].append('softpipe')
|
|
if env['llvm'] and 'llvmpipe' not in env['drivers']:
|
|
env['drivers'].append('llvmpipe')
|
|
if 'sw' not in env['drivers']:
|
|
env['drivers'].append('sw')
|
|
|
|
# Includes
|
|
env.Prepend(CPPPATH = [
|
|
'#/include',
|
|
])
|
|
env.Append(CPPPATH = [
|
|
'#/src/gallium/include',
|
|
'#/src/gallium/auxiliary',
|
|
'#/src/gallium/drivers',
|
|
'#/src/gallium/winsys',
|
|
])
|
|
|
|
if env['msvc']:
|
|
env.Append(CPPPATH = ['#include/c99'])
|
|
|
|
# Embedded
|
|
if platform == 'embedded':
|
|
env.Append(CPPDEFINES = [
|
|
'_POSIX_SOURCE',
|
|
('_POSIX_C_SOURCE', '199309L'),
|
|
'_SVID_SOURCE',
|
|
'_BSD_SOURCE',
|
|
'_GNU_SOURCE',
|
|
|
|
'PTHREADS',
|
|
])
|
|
env.Append(LIBS = [
|
|
'm',
|
|
'pthread',
|
|
'dl',
|
|
])
|
|
|
|
# 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',
|
|
])
|
|
if gcc:
|
|
env.Append(CFLAGS = ['-fvisibility=hidden'])
|
|
if platform == 'darwin':
|
|
env.Append(CPPDEFINES = ['_DARWIN_C_SOURCE'])
|
|
env.Append(LIBS = [
|
|
'm',
|
|
'pthread',
|
|
'dl',
|
|
])
|
|
|
|
# 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',
|
|
variant_dir = env['build'],
|
|
duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
|
|
)
|
|
|
|
env.Default('src')
|
|
|