SConstruct 3.39 KB
Newer Older
1 2 3 4 5
#######################################################################
# Top-level SConstruct
#
# For example, invoke scons as 
#
6
#   scons build=debug llvm=yes machine=x86
7 8 9 10 11
#
# to set configuration variables. Or you can write those options to a file
# named config.py:
#
#   # config.py
12 13
#   build='debug'
#   llvm=True
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
import os
import os.path
import sys
Alan Hourihane's avatar
Alan Hourihane committed
26
import SCons.Util
27 28 29 30 31

import common

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

33
opts = Variables('config.py')
34
common.AddOptions(opts)
35

36
env = Environment(
37 38
	options = opts,
	tools = ['gallium'],
39
	toolpath = ['#scons'],	
40 41 42
	ENV = os.environ,
)

43 44 45 46 47 48 49 50 51 52 53 54
# Backwards compatability with old target configuration variable
try:
    targets = ARGUMENTS['targets']
except KeyError:
    pass
else:
    targets = targets.split(',')
    print 'scons: warning: targets option is deprecated; pass the targets on their own such as'
    print
    print '  scons %s' % ' '.join(targets)
    print 
    COMMAND_LINE_TARGETS.append(targets)
55

56

57
Help(opts.GenerateHelpText(env))
58 59 60 61 62 63


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

# Includes
64
env.Prepend(CPPPATH = [
65
	'#/include',
66 67
])
env.Append(CPPPATH = [
68 69 70
	'#/src/gallium/include',
	'#/src/gallium/auxiliary',
	'#/src/gallium/drivers',
71
	'#/src/gallium/winsys',
72 73
])

74 75 76
if env['msvc']:
    env.Append(CPPPATH = ['#include/c99'])

77
# Embedded
78
if env['platform'] == 'embedded':
79 80 81 82 83 84 85 86 87 88 89 90 91 92
	env.Append(CPPDEFINES = [
		'_POSIX_SOURCE',
		('_POSIX_C_SOURCE', '199309L'), 
		'_SVID_SOURCE',
		'_BSD_SOURCE', 
		'_GNU_SOURCE',
		
		'PTHREADS',
	])
	env.Append(LIBS = [
		'm',
		'pthread',
		'dl',
	])
93

94
# Posix
95
if env['platform'] in ('posix', 'linux', 'freebsd', 'darwin'):
96 97 98 99 100 101 102
	env.Append(CPPDEFINES = [
		'_POSIX_SOURCE',
		('_POSIX_C_SOURCE', '199309L'), 
		'_SVID_SOURCE',
		'_BSD_SOURCE', 
		'_GNU_SOURCE',
		'PTHREADS',
103
		'HAVE_POSIX_MEMALIGN',
104
	])
105
	if env['gcc']:
106
		env.Append(CFLAGS = ['-fvisibility=hidden'])
107
	if env['platform'] == 'darwin':
108
		env.Append(CPPDEFINES = ['_DARWIN_C_SOURCE'])
109 110 111 112 113
	env.Append(LIBS = [
		'm',
		'pthread',
		'dl',
	])
114

115 116 117
# for debugging
#print env.Dump()

118
Export('env')
119 120


José Fonseca's avatar
José Fonseca committed
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
#######################################################################
# Invoke host SConscripts 
# 
# For things that are meant to be run on the native host build machine, instead
# of the target machine.
#

# Create host environent
if env['platform'] != common.host_platform:
    host_env = Environment(
        options = opts,
        # no tool used
        tools = [],
        toolpath = ['#scons'],
        ENV = os.environ,
    )

    # Override options
    host_env['platform'] = common.host_platform
    host_env['machine'] = common.host_machine
    host_env['toolchain'] = 'default'
    host_env['llvm'] = False

    host_env.Tool('gallium')

    SConscript(
        'src/glsl/SConscript',
        variant_dir = host_env['build_dir'],
        duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
        exports={'env':host_env},
    )


154 155 156
#######################################################################
# Invoke SConscripts

157 158
# TODO: Build several variants at the same time?
# http://www.scons.org/wiki/SimultaneousVariantBuilds
159 160

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