SConstruct 3.58 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

Chia-I Wu's avatar
Chia-I Wu committed
59 60 61 62 63 64
# fail early for a common error on windows
if env['gles']:
    try:
        import libxml2
    except ImportError:
        raise SCons.Errors.UserError, "GLES requires libxml2-python to build"
65 66 67 68 69

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

# Includes
70
env.Prepend(CPPPATH = [
71
	'#/include',
72 73
])
env.Append(CPPPATH = [
74 75 76
	'#/src/gallium/include',
	'#/src/gallium/auxiliary',
	'#/src/gallium/drivers',
77
	'#/src/gallium/winsys',
78 79
])

80 81 82
if env['msvc']:
    env.Append(CPPPATH = ['#include/c99'])

83
# Embedded
84
if env['platform'] == 'embedded':
85 86 87 88 89 90 91 92 93 94 95 96 97 98
	env.Append(CPPDEFINES = [
		'_POSIX_SOURCE',
		('_POSIX_C_SOURCE', '199309L'), 
		'_SVID_SOURCE',
		'_BSD_SOURCE', 
		'_GNU_SOURCE',
		
		'PTHREADS',
	])
	env.Append(LIBS = [
		'm',
		'pthread',
		'dl',
	])
99

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

121 122 123
# for debugging
#print env.Dump()

124
Export('env')
125 126


José Fonseca's avatar
José Fonseca committed
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 154 155 156 157 158 159
#######################################################################
# 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},
    )


160 161 162
#######################################################################
# Invoke SConscripts

163 164
# TODO: Build several variants at the same time?
# http://www.scons.org/wiki/SimultaneousVariantBuilds
165 166

SConscript(
167
	'src/SConscript',
168
	variant_dir = env['build_dir'],
169 170
	duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
)
171