SConstruct revision dcda711e4c365219de8c89fe0501337dac0acb77
11da651f0d6c0041c8e7d52070e887dfe4063d307Logan ChienCOMMON_CFLAGS = ['-Wall', '-Werror'] 2dcda711e4c365219de8c89fe0501337dac0acb77Logan ChienCOMMON_CXXFLAGS = ['-Wall', '-Werror', '-fno-exceptions'] 31da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 4dcda711e4c365219de8c89fe0501337dac0acb77Logan Chienconfigs = { 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'], 12dcda711e4c365219de8c89fe0501337dac0acb77Logan Chien 'CXXFLAGS': COMMON_CXXFLAGS + ['-O2'] 131da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien }, 141da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien} 151da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 16dcda711e4c365219de8c89fe0501337dac0acb77Logan Chientoolsets = { 17594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 'gcc': { 18594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 'CC': 'gcc', 19594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 'CXX': 'g++', 20594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien }, 21594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 22594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 'clang': { 23594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 'CC': 'clang', 24594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 'CXX': 'clang++', 25594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien }, 26594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien} 27594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 281da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chienmode = ARGUMENTS.get('mode', 'release') 29dcda711e4c365219de8c89fe0501337dac0acb77Logan Chientoolset = ARGUMENTS.get('toolset', 'gcc') 301da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien 31dcda711e4c365219de8c89fe0501337dac0acb77Logan Chienif not mode in configs: 321da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien print 'ERROR: Unknown building mode:', mode 3309407ada940687ab3675641e3313f632a2c37be0TDYa Exit(1) 3409407ada940687ab3675641e3313f632a2c37be0TDYa 35dcda711e4c365219de8c89fe0501337dac0acb77Logan Chienif not toolset in toolsets: 36dcda711e4c365219de8c89fe0501337dac0acb77Logan Chien print 'ERROR: Unknown toolset:', toolset 37dcda711e4c365219de8c89fe0501337dac0acb77Logan Chien Exit(1) 3809407ada940687ab3675641e3313f632a2c37be0TDYa 39dcda711e4c365219de8c89fe0501337dac0acb77Logan Chienbuild_config = configs[mode] 40dcda711e4c365219de8c89fe0501337dac0acb77Logan Chienbuild_toolset = toolsets[toolset] 41594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien 42dcda711e4c365219de8c89fe0501337dac0acb77Logan Chienprint '===> BUILDING IN', mode.upper(), 'MODE ...' 439f4e7c3ba36586442e77c3054998447669d2a627Logan Chien 44dcda711e4c365219de8c89fe0501337dac0acb77Logan Chienimport os 45ae4b31231fe54925442d909b2edc5ed28b4d1787TDYa 46dcda711e4c365219de8c89fe0501337dac0acb77Logan Chienenv = Environment(CC=build_toolset['CC'], 47dcda711e4c365219de8c89fe0501337dac0acb77Logan Chien CXX=build_toolset['CXX'], 48594fa132b76b87cbb0832cd856a6999b547b1822Logan Chien CFLAGS=build_config['CFLAGS'], 491da651f0d6c0041c8e7d52070e887dfe4063d307Logan Chien CXXFLAGS=build_config['CXXFLAGS'], 509a7cbd14dcdc519f34d0bbefd650ed29bd3897c9Logan Chien CPPPATH=['.', 'include'], 51dcda711e4c365219de8c89fe0501337dac0acb77Logan Chien ENV={'PATH': os.environ['PATH']}) 520c5c38dd712cd3ab731dea6023e3806a31dab03fTDYa 533a54de165cd05ad9db7e5d9e4acdbcd60f5a01e8Logan Chienenv.ParseConfig('llvm-config --cxxflags --ldflags --libs support') 540c5c38dd712cd3ab731dea6023e3806a31dab03fTDYa 55b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chienenv.Program('elfreader', 569a7cbd14dcdc519f34d0bbefd650ed29bd3897c9Logan Chien source=['lib/ELFHeader.cpp', 579a7cbd14dcdc519f34d0bbefd650ed29bd3897c9Logan Chien 'lib/ELFSectionHeader.cpp', 589a7cbd14dcdc519f34d0bbefd650ed29bd3897c9Logan Chien 'lib/ELFSectionSymTabEntry.cpp', 599a7cbd14dcdc519f34d0bbefd650ed29bd3897c9Logan Chien 'lib/ELFTypes.cpp', 60b10ad5844867c7a33bb0d994e3ba55c17e41d18dLogan Chien 'utils/helper.cpp', 619a7cbd14dcdc519f34d0bbefd650ed29bd3897c9Logan Chien 'utils/raw_ostream.cpp', 629a7cbd14dcdc519f34d0bbefd650ed29bd3897c9Logan Chien 'main.cpp']) 63