Home | History | Annotate | Download | only in linkloader
      1 #
      2 # Copyright (C) 2011 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 
     17 COMMON_CFLAGS = ['-Wall', '-Werror']
     18 COMMON_CXXFLAGS = ['-Wall', '-Werror', '-fno-exceptions']
     19 
     20 configs = {
     21     'debug': {
     22         'CFLAGS': COMMON_CFLAGS + ['-g'],
     23         'CXXFLAGS': COMMON_CXXFLAGS + ['-g']
     24     },
     25 
     26     'release': {
     27         'CFLAGS': COMMON_CFLAGS + ['-O2'],
     28         'CXXFLAGS': COMMON_CXXFLAGS + ['-O2']
     29     },
     30 }
     31 
     32 toolsets = {
     33     'gcc': {
     34         'CC': 'gcc',
     35         'CXX': 'g++',
     36     },
     37 
     38     'clang': {
     39         'CC': 'clang',
     40         'CXX': 'clang++',
     41     },
     42 }
     43 
     44 mode = ARGUMENTS.get('mode', 'release')
     45 toolset = ARGUMENTS.get('toolset', 'gcc')
     46 
     47 if not mode in configs:
     48     print 'ERROR: Unknown building mode:', mode
     49     Exit(1)
     50 
     51 if not toolset in toolsets:
     52     print 'ERROR: Unknown toolset:', toolset
     53     Exit(1)
     54 
     55 build_config = configs[mode]
     56 build_toolset = toolsets[toolset]
     57 
     58 print '===> BUILDING IN', mode.upper(), 'MODE ...'
     59 
     60 import os
     61 
     62 env = Environment(CC=build_toolset['CC'],
     63                   CXX=build_toolset['CXX'],
     64                   CFLAGS=build_config['CFLAGS'],
     65                   CXXFLAGS=build_config['CXXFLAGS'],
     66                   CPPPATH=['.', 'include'],
     67                   ENV={'PATH': os.environ['PATH']})
     68 
     69 env.ParseConfig('llvm-config --cxxflags --ldflags --libs support')
     70 
     71 env.Program('rsloader',
     72             source=['lib/ELFHeader.cpp',
     73                     'lib/ELFSectionHeader.cpp',
     74                     'lib/ELFSymbol.cpp',
     75                     'lib/ELFTypes.cpp',
     76                     'lib/MemChunk.cpp',
     77                     'lib/StubLayout.cpp',
     78                     'utils/helper.cpp',
     79                     'utils/raw_ostream.cpp',
     80                     'utils/rsl_assert.cpp',
     81                     'main.cpp'])
     82