blob: 9ce9211690e25762d1b5e645ab6b55c881083b0a [file] [log] [blame]
Logan Chien1da651f2011-05-12 03:13:53 +08001COMMON_CFLAGS = ['-Wall', '-Werror']
Logan Chiendcda7112011-06-01 20:38:43 +08002COMMON_CXXFLAGS = ['-Wall', '-Werror', '-fno-exceptions']
TDYa12709407ad2011-05-10 20:44:53 +08003
Logan Chiendcda7112011-06-01 20:38:43 +08004configs = {
Logan Chien1da651f2011-05-12 03:13:53 +08005 'debug': {
6 'CFLAGS': COMMON_CFLAGS + ['-g'],
7 'CXXFLAGS': COMMON_CXXFLAGS + ['-g']
8 },
9
10 'release': {
11 'CFLAGS': COMMON_CFLAGS + ['-O2'],
Logan Chiendcda7112011-06-01 20:38:43 +080012 'CXXFLAGS': COMMON_CXXFLAGS + ['-O2']
Logan Chien1da651f2011-05-12 03:13:53 +080013 },
14}
15
Logan Chiendcda7112011-06-01 20:38:43 +080016toolsets = {
Logan Chien594fa132011-05-19 05:21:47 +080017 'gcc': {
18 'CC': 'gcc',
19 'CXX': 'g++',
20 },
21
22 'clang': {
23 'CC': 'clang',
24 'CXX': 'clang++',
25 },
26}
27
Logan Chien1da651f2011-05-12 03:13:53 +080028mode = ARGUMENTS.get('mode', 'release')
Logan Chiendcda7112011-06-01 20:38:43 +080029toolset = ARGUMENTS.get('toolset', 'gcc')
Logan Chien1da651f2011-05-12 03:13:53 +080030
Logan Chiendcda7112011-06-01 20:38:43 +080031if not mode in configs:
Logan Chien1da651f2011-05-12 03:13:53 +080032 print 'ERROR: Unknown building mode:', mode
TDYa12709407ad2011-05-10 20:44:53 +080033 Exit(1)
34
Logan Chiendcda7112011-06-01 20:38:43 +080035if not toolset in toolsets:
36 print 'ERROR: Unknown toolset:', toolset
37 Exit(1)
TDYa12709407ad2011-05-10 20:44:53 +080038
Logan Chiendcda7112011-06-01 20:38:43 +080039build_config = configs[mode]
40build_toolset = toolsets[toolset]
41
42print '===> BUILDING IN', mode.upper(), 'MODE ...'
TDYa12709407ad2011-05-10 20:44:53 +080043
Logan Chien594fa132011-05-19 05:21:47 +080044import os
45
Logan Chiendcda7112011-06-01 20:38:43 +080046env = Environment(CC=build_toolset['CC'],
47 CXX=build_toolset['CXX'],
Logan Chien594fa132011-05-19 05:21:47 +080048 CFLAGS=build_config['CFLAGS'],
Logan Chien1da651f2011-05-12 03:13:53 +080049 CXXFLAGS=build_config['CXXFLAGS'],
Logan Chien9a7cbd12011-06-01 20:15:52 +080050 CPPPATH=['.', 'include'],
Logan Chiendcda7112011-06-01 20:38:43 +080051 ENV={'PATH': os.environ['PATH']})
TDYa1270c5c38d2011-05-26 20:47:01 +080052
Logan Chien3a54de12011-06-01 19:10:29 +080053env.ParseConfig('llvm-config --cxxflags --ldflags --libs support')
TDYa1270c5c38d2011-05-26 20:47:01 +080054
Logan Chienb8dc52c2011-06-10 21:06:38 +080055env.Program('rsloader',
Logan Chien9a7cbd12011-06-01 20:15:52 +080056 source=['lib/ELFHeader.cpp',
57 'lib/ELFSectionHeader.cpp',
Logan Chiend90e4882011-06-01 21:44:31 +080058 'lib/ELFSymbol.cpp',
Logan Chien9a7cbd12011-06-01 20:15:52 +080059 'lib/ELFTypes.cpp',
TDYa12799868782011-06-14 13:40:21 +080060 'lib/MemChunk.cpp',
61 'lib/StubLayout.cpp',
Logan Chienb10ad582011-05-05 01:14:08 +080062 'utils/helper.cpp',
Logan Chien9a7cbd12011-06-01 20:15:52 +080063 'utils/raw_ostream.cpp',
64 'main.cpp'])