1import sys
2
3env = Environment()
4
5# Since we can't use toolpath=['#/toolspec'] yet...
6sys.path.append(Dir('#/toolspec').abspath)
7
8optCache = 'options.cache'
9opts = Options(optCache)
10opts.AddOptions(
11    BoolOption('dbg',    'Build with debugging enabled', 0),
12    BoolOption('opt',    'Build with optimizations', 0),
13    BoolOption('distcc', 'Enable compiling with distcc', 0),
14    BoolOption('nowarn', 'Disable all warnings', 0),
15    BoolOption('warningsAsErrors', 'Treat warnings as errors', 0))
16
17opts.Update(env)
18Help(opts.GenerateHelpText(env))
19opts.Save(optCache, env)
20
21if env.get('dbg'):
22    env.Append(CCFLAGS=['-g'], CPPDEFINES=['DEBUG', '_DEBUG'])
23if env.get('opt'):
24    env.Append(CCFLAGS=['-O2'], LINKFLAGS=['-s'], CPPDEFINES=['NDEBUG'])
25if env.get('distcc'):
26    env['CC']  = ['$(', 'distcc', '$)', env['CC']]
27    env['CXX'] = ['$(', 'distcc', '$)', env['CXX']]
28if env.get('nowarn'):
29    env.Append(CCFLAGS=['-w'])
30else:
31    if env['CC'] == 'gcc':
32        env.Append(CCFLAGS=['-Wall'])
33    elif env['CXX'] == 'g++':
34        env.Append(CXXFLAGS=['-Wall'])
35    if env['CXX'] == 'g++':
36        env.Append(CXXFLAGS=['-Wno-non-virtual-dtor'])
37if env.get('warningsAsErrors'):
38    if env['CC'] == 'gcc':
39        env.Append(CCFLAGS=['-Werror'])
40    elif env['CXX'] == 'g++':
41        env.Append(CXXFLAGS=['-Werror'])
42
43Export('env')
44SConscript(dirs=['examples', 'src', 'tools'])
45