SConstruct revision 1da651f0d6c0041c8e7d52070e887dfe4063d307
11da651f0d6c0041c8e7d52070e887dfe4063d307Logan ChienCOMMON_CFLAGS = ['-Wall', '-Werror'] 21da651f0d6c0041c8e7d52070e887dfe4063d307Logan ChienCOMMON_CXXFLAGS = ['-Wall', '-Werror'] 31da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 41da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chienbuild_configurations = { 51da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 'debug': { 61da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 'CFLAGS': COMMON_CFLAGS + ['-g'], 71da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 'CXXFLAGS': COMMON_CXXFLAGS + ['-g'] 81da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien }, 91da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 101da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 'release': { 111da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 'CFLAGS': COMMON_CFLAGS + ['-O2'], 121da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 'CXXFLAGS': COMMON_CXXFLAGS + ['-O2', '-fno-exceptions'] 131da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien # FIXME: We should move -fno-exceptions to COMMON_CXXFLAGS. 141da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien }, 151da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien} 161da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 171da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chienmode = ARGUMENTS.get('mode', 'release') 181da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 191da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chienif not mode in build_configurations: 201da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien print 'ERROR: Unknown building mode:', mode 2109407ada940687ab3675641e3313f632a2c37be0TDYa Exit(1) 2209407ada940687ab3675641e3313f632a2c37be0TDYa 231da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chienbuild_config = build_configurations[mode] 2409407ada940687ab3675641e3313f632a2c37be0TDYa 251da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chienprint '===> BUILDING IN ' + mode.upper() + ' MODE ...' 2609407ada940687ab3675641e3313f632a2c37be0TDYa 271da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chienenv = Environment(CFLAGS=build_config['CFLAGS'], 281da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien CXXFLAGS=build_config['CXXFLAGS'], 29b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien CPPPATH=['utils']) 30b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien 31b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chienenv.Program('elfreader', 32baebcafe717a35bc3c4f50f9f19a405112358e4aLogan Chien source=['elf_header.cpp', 33cd6eb0e1bbdec7ed3ff0b863cc69d92709996574TDYa 'elf_section_header.cpp', 346bf0cd2e41647f4e28d3e509984e55ede29d259dLogan Chien 'elf_object.cpp', 35b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien 'main.cpp', 36b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien 'utils/helper.cpp', 37b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien 'utils/term.cpp']) 38