| Logan Chien | 1da651f | 2011-05-12 03:13:53 +0800 | [diff] [blame] | 1 | COMMON_CFLAGS = ['-Wall', '-Werror'] |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 2 | COMMON_CXXFLAGS = ['-Wall', '-Werror', '-fno-exceptions'] |
| TDYa127 | 09407ad | 2011-05-10 20:44:53 +0800 | [diff] [blame] | 3 | |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 4 | configs = { |
| Logan Chien | 1da651f | 2011-05-12 03:13:53 +0800 | [diff] [blame] | 5 | 'debug': { |
| 6 | 'CFLAGS': COMMON_CFLAGS + ['-g'], |
| 7 | 'CXXFLAGS': COMMON_CXXFLAGS + ['-g'] |
| 8 | }, |
| 9 | |
| 10 | 'release': { |
| 11 | 'CFLAGS': COMMON_CFLAGS + ['-O2'], |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 12 | 'CXXFLAGS': COMMON_CXXFLAGS + ['-O2'] |
| Logan Chien | 1da651f | 2011-05-12 03:13:53 +0800 | [diff] [blame] | 13 | }, |
| 14 | } |
| 15 | |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 16 | toolsets = { |
| Logan Chien | 594fa13 | 2011-05-19 05:21:47 +0800 | [diff] [blame] | 17 | 'gcc': { |
| 18 | 'CC': 'gcc', |
| 19 | 'CXX': 'g++', |
| 20 | }, |
| 21 | |
| 22 | 'clang': { |
| 23 | 'CC': 'clang', |
| 24 | 'CXX': 'clang++', |
| 25 | }, |
| 26 | } |
| 27 | |
| Logan Chien | 1da651f | 2011-05-12 03:13:53 +0800 | [diff] [blame] | 28 | mode = ARGUMENTS.get('mode', 'release') |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 29 | toolset = ARGUMENTS.get('toolset', 'gcc') |
| Logan Chien | 1da651f | 2011-05-12 03:13:53 +0800 | [diff] [blame] | 30 | |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 31 | if not mode in configs: |
| Logan Chien | 1da651f | 2011-05-12 03:13:53 +0800 | [diff] [blame] | 32 | print 'ERROR: Unknown building mode:', mode |
| TDYa127 | 09407ad | 2011-05-10 20:44:53 +0800 | [diff] [blame] | 33 | Exit(1) |
| 34 | |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 35 | if not toolset in toolsets: |
| 36 | print 'ERROR: Unknown toolset:', toolset |
| 37 | Exit(1) |
| TDYa127 | 09407ad | 2011-05-10 20:44:53 +0800 | [diff] [blame] | 38 | |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 39 | build_config = configs[mode] |
| 40 | build_toolset = toolsets[toolset] |
| 41 | |
| 42 | print '===> BUILDING IN', mode.upper(), 'MODE ...' |
| TDYa127 | 09407ad | 2011-05-10 20:44:53 +0800 | [diff] [blame] | 43 | |
| Logan Chien | 594fa13 | 2011-05-19 05:21:47 +0800 | [diff] [blame] | 44 | import os |
| 45 | |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 46 | env = Environment(CC=build_toolset['CC'], |
| 47 | CXX=build_toolset['CXX'], |
| Logan Chien | 594fa13 | 2011-05-19 05:21:47 +0800 | [diff] [blame] | 48 | CFLAGS=build_config['CFLAGS'], |
| Logan Chien | 1da651f | 2011-05-12 03:13:53 +0800 | [diff] [blame] | 49 | CXXFLAGS=build_config['CXXFLAGS'], |
| Logan Chien | 9a7cbd1 | 2011-06-01 20:15:52 +0800 | [diff] [blame] | 50 | CPPPATH=['.', 'include'], |
| Logan Chien | dcda711 | 2011-06-01 20:38:43 +0800 | [diff] [blame] | 51 | ENV={'PATH': os.environ['PATH']}) |
| TDYa127 | 0c5c38d | 2011-05-26 20:47:01 +0800 | [diff] [blame] | 52 | |
| Logan Chien | 3a54de1 | 2011-06-01 19:10:29 +0800 | [diff] [blame] | 53 | env.ParseConfig('llvm-config --cxxflags --ldflags --libs support') |
| TDYa127 | 0c5c38d | 2011-05-26 20:47:01 +0800 | [diff] [blame] | 54 | |
| Logan Chien | b8dc52c | 2011-06-10 21:06:38 +0800 | [diff] [blame] | 55 | env.Program('rsloader', |
| Logan Chien | 9a7cbd1 | 2011-06-01 20:15:52 +0800 | [diff] [blame] | 56 | source=['lib/ELFHeader.cpp', |
| 57 | 'lib/ELFSectionHeader.cpp', |
| Logan Chien | d90e488 | 2011-06-01 21:44:31 +0800 | [diff] [blame] | 58 | 'lib/ELFSymbol.cpp', |
| Logan Chien | 9a7cbd1 | 2011-06-01 20:15:52 +0800 | [diff] [blame] | 59 | 'lib/ELFTypes.cpp', |
| TDYa127 | 9986878 | 2011-06-14 13:40:21 +0800 | [diff] [blame^] | 60 | 'lib/MemChunk.cpp', |
| 61 | 'lib/StubLayout.cpp', |
| Logan Chien | b10ad58 | 2011-05-05 01:14:08 +0800 | [diff] [blame] | 62 | 'utils/helper.cpp', |
| Logan Chien | 9a7cbd1 | 2011-06-01 20:15:52 +0800 | [diff] [blame] | 63 | 'utils/raw_ostream.cpp', |
| 64 | 'main.cpp']) |