SConstruct 3.6 KB
Newer Older
1 2 3 4 5
#######################################################################
# Top-level SConstruct
#
# For example, invoke scons as 
#
6
#   scons debug=1 dri=0 machine=x86
7 8 9 10 11 12 13
#
# to set configuration variables. Or you can write those options to a file
# named config.py:
#
#   # config.py
#   debug=1
#   dri=0
14
#   machine='x86'
15 16 17 18 19 20 21 22
# 
# Invoke
#
#   scons -h
#
# to get the full list of options. See scons manpage for more info.
#  

23 24 25 26 27 28 29 30
import os
import os.path
import sys

import common

#######################################################################
# Configuration options
José Fonseca's avatar
José Fonseca committed
31

32 33
default_statetrackers = 'mesa'

34
if common.default_platform in ('linux', 'freebsd', 'darwin'):
35
	default_drivers = 'softpipe,failover,i915simple,trace'
José Fonseca's avatar
José Fonseca committed
36
	default_winsys = 'xlib'
37
elif common.default_platform in ('winddk',):
38
	default_drivers = 'softpipe,i915simple,trace'
José Fonseca's avatar
José Fonseca committed
39
	default_winsys = 'all'
40
else:
José Fonseca's avatar
José Fonseca committed
41 42
	default_drivers = 'all'
	default_winsys = 'all'
43

44 45
opts = Options('config.py')
common.AddOptions(opts)
José Fonseca's avatar
José Fonseca committed
46
opts.Add(ListOption('statetrackers', 'state trackers to build', default_statetrackers,
47
                     ['mesa', 'python']))
José Fonseca's avatar
José Fonseca committed
48
opts.Add(ListOption('drivers', 'pipe drivers to build', default_drivers,
49
                     ['softpipe', 'failover', 'i915simple', 'i965simple', 'cell', 'trace', 'r300']))
José Fonseca's avatar
José Fonseca committed
50
opts.Add(ListOption('winsys', 'winsys drivers to build', default_winsys,
51
                     ['xlib', 'intel', 'gdi', 'amd']))
52

53 54
opts.Add(EnumOption('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0')))

55
env = Environment(
56 57
	options = opts,
	tools = ['gallium'],
58
	toolpath = ['#scons'],	
59 60 61
	ENV = os.environ,
)

62 63 64 65 66
Help(opts.GenerateHelpText(env))

# replicate options values in local variables
debug = env['debug']
dri = env['dri']
67
llvm = env['llvm']
68
machine = env['machine']
69
platform = env['platform']
70 71 72

# derived options
x86 = machine == 'x86'
Michel Dänzer's avatar
Michel Dänzer committed
73
ppc = machine == 'ppc'
74
gcc = platform in ('linux', 'freebsd', 'darwin')
75
msvc = platform in ('windows', 'winddk')
76 77 78 79

Export([
	'debug', 
	'x86', 
Michel Dänzer's avatar
Michel Dänzer committed
80
	'ppc', 
81
	'dri', 
82
	'llvm',
83 84 85 86 87 88 89 90 91 92 93 94
	'platform',
	'gcc',
	'msvc',
])


#######################################################################
# Environment setup

# Includes
env.Append(CPPPATH = [
	'#/include',
95 96 97
	'#/src/gallium/include',
	'#/src/gallium/auxiliary',
	'#/src/gallium/drivers',
98 99 100
])


101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
# 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',
	])

122 123 124 125 126 127 128 129 130 131 132

# 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',
	])

133 134 135
# LLVM
if llvm:
	# See also http://www.scons.org/wiki/UsingPkgConfig
136
	env.ParseConfig('llvm-config --cflags --ldflags --libs backend bitreader engine instrumentation interpreter ipo')
137
	env.Append(CPPDEFINES = ['MESA_LLVM'])
138
        # Force C++ linkage
José Fonseca's avatar
José Fonseca committed
139
	env['LINK'] = env['CXX']
140

141
# libGL
142
if platform in ('linux', 'freebsd', 'darwin'):
143 144 145 146 147 148 149 150
	env.Append(LIBS = [
		'X11',
		'Xext',
		'Xxf86vm',
		'Xdamage',
		'Xfixes',
	])

151 152 153
# for debugging
#print env.Dump()

154
Export('env')
155 156 157 158 159


#######################################################################
# Invoke SConscripts

160 161
# TODO: Build several variants at the same time?
# http://www.scons.org/wiki/SimultaneousVariantBuilds
162 163

SConscript(
164
	'src/SConscript',
165
	variant_dir = env['build'],
166 167
	duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
)