SConstruct revision 09407ada940687ab3675641e3313f632a2c37be0
109407ada940687ab3675641e3313f632a2c37be0TDYa#from http://www.scons.org/wiki/SconstructMultiple
209407ada940687ab3675641e3313f632a2c37be0TDYa#usage: scons mode=debug
309407ada940687ab3675641e3313f632a2c37be0TDYa#get the mode flag from the command line
409407ada940687ab3675641e3313f632a2c37be0TDYa#default to 'release' if the user didn't specify
509407ada940687ab3675641e3313f632a2c37be0TDYamymode = ARGUMENTS.get('mode', 'release')   #holds current mode
609407ada940687ab3675641e3313f632a2c37be0TDYa
709407ada940687ab3675641e3313f632a2c37be0TDYa#check if the user has been naughty: only 'debug' or 'release' allowed
809407ada940687ab3675641e3313f632a2c37be0TDYaif not (mymode in ['debug', 'release']):
909407ada940687ab3675641e3313f632a2c37be0TDYa    print "Error: expected 'debug' or 'release', found: " + mymode
1009407ada940687ab3675641e3313f632a2c37be0TDYa    Exit(1)
1109407ada940687ab3675641e3313f632a2c37be0TDYa
1209407ada940687ab3675641e3313f632a2c37be0TDYa#tell the user what we're doing
1309407ada940687ab3675641e3313f632a2c37be0TDYaprint '**** Compiling in ' + mymode + ' mode...'
1409407ada940687ab3675641e3313f632a2c37be0TDYa
1509407ada940687ab3675641e3313f632a2c37be0TDYaif mymode == 'debug':
1609407ada940687ab3675641e3313f632a2c37be0TDYa    CFLAGS=['-Wall', '-Werror', '-g']
1709407ada940687ab3675641e3313f632a2c37be0TDYa    CXXFLAGS=['-Wall', '-Werror', '-g']
1809407ada940687ab3675641e3313f632a2c37be0TDYaelse:  #default mode(release)
1909407ada940687ab3675641e3313f632a2c37be0TDYa    CFLAGS=['-Wall', '-Werror', '-O2']
2009407ada940687ab3675641e3313f632a2c37be0TDYa    CXXFLAGS=['-Wall', '-Werror', '-fno-exceptions', '-O2']
2109407ada940687ab3675641e3313f632a2c37be0TDYa
2209407ada940687ab3675641e3313f632a2c37be0TDYaenv = Environment(CFLAGS=CFLAGS,
2309407ada940687ab3675641e3313f632a2c37be0TDYa                  CXXFLAGS=CXXFLAGS,
24b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien                  CPPPATH=['utils'])
25b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien
26b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chienenv.Program('elfreader',
27baebcafe717a35bc3c4f50f9f19a405112358e4aLogan Chien            source=['elf_header.cpp',
286bf0cd2e41647f4e28d3e509984e55ede29d259dLogan Chien                    'elf_object.cpp',
29b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien                    'main.cpp',
30b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien                    'utils/helper.cpp',
31b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien                    'utils/term.cpp'])
32