Package wafadmin :: Package Tools :: Module suncc
[hide private]
[frames] | no frames]

Source Code for Module wafadmin.Tools.suncc

 1  #!/usr/bin/env python 
 2  # encoding: utf-8 
 3  # Thomas Nagy, 2006 (ita) 
 4  # Ralf Habacker, 2006 (rh) 
 5   
 6  import os, optparse 
 7  import Utils, Options, Configure 
 8  import ccroot, ar 
 9  from Configure import conftest 
10 11 @conftest 12 -def find_scc(conf):
13 v = conf.env 14 suncc = None 15 if v['CC']: suncc = v['CC'] 16 elif 'CC' in os.environ: suncc = os.environ['CC'] 17 #if not cc: cc = conf.find_program('gcc', var='CC') 18 if not suncc: suncc = conf.find_program('cc', var='CC') 19 if not suncc: conf.fatal('suncc was not found') 20 v['CC'] = suncc 21 22 #TODO: Has anyone a better idea to check if this is a sun cc? 23 ret = os.popen("%s -flags" % suncc).close() 24 if ret: 25 v['CC_NAME'] = 'sun' 26 conf.check_message('suncc', '', not ret) 27 return
28
29 @conftest 30 -def scc_common_flags(conf):
31 v = conf.env 32 33 # CPPFLAGS CCDEFINES _CCINCFLAGS _CCDEFFLAGS _LIBDIRFLAGS _LIBFLAGS 34 35 v['CC_SRC_F'] = '' 36 v['CC_TGT_F'] = '-c -o ' 37 v['CPPPATH_ST'] = '-I%s' # template for adding include paths 38 39 # linker 40 if not v['LINK_CC']: v['LINK_CC'] = v['CC'] 41 v['CCLNK_SRC_F'] = '' 42 v['CCLNK_TGT_F'] = '-o ' 43 44 v['LIB_ST'] = '-l%s' # template for adding libs 45 v['LIBPATH_ST'] = '-L%s' # template for adding libpaths 46 v['STATICLIB_ST'] = '-l%s' 47 v['STATICLIBPATH_ST'] = '-L%s' 48 v['CCDEFINES_ST'] = '-D%s' 49 50 51 v['SHLIB_MARKER'] = '-Bdynamic' 52 v['STATICLIB_MARKER'] = '-Bstatic' 53 54 # program 55 v['program_PATTERN'] = '%s' 56 57 # shared library 58 v['shlib_CCFLAGS'] = ['-Kpic', '-DPIC'] 59 v['shlib_LINKFLAGS'] = ['-G'] 60 v['shlib_PATTERN'] = 'lib%s.so' 61 62 # static lib 63 v['staticlib_LINKFLAGS'] = ['-Bstatic'] 64 v['staticlib_PATTERN'] = 'lib%s.a'
65
66 @conftest 67 -def scc_modifier_debug(conf):
68 v = conf.env 69 70 # compiler debug levels 71 v['CCFLAGS'] = ['-O'] 72 if conf.check_flags('-O2'): 73 v['CCFLAGS_OPTIMIZED'] = ['-O2'] 74 v['CCFLAGS_RELEASE'] = ['-O2'] 75 if conf.check_flags('-g -DDEBUG'): 76 v['CCFLAGS_DEBUG'] = ['-g', '-DDEBUG'] 77 if conf.check_flags('-g3 -O0 -DDEBUG'): 78 v['CCFLAGS_ULTRADEBUG'] = ['-g3', '-O0', '-DDEBUG'] 79 80 # see the option below 81 try: 82 debug_level = Options.options.debug_level.upper() 83 except AttributeError: 84 debug_level = ccroot.DEBUG_LEVELS.CUSTOM 85 v.append_value('CCFLAGS', v['CCFLAGS_'+debug_level])
86 87 detect = ''' 88 find_scc 89 find_cpp 90 find_ar 91 scc_common_flags 92 cc_load_tools 93 cc_check_features 94 gcc_modifier_debug 95 cc_add_flags 96 ''' 97