2010-04-03 09:19:57 +11:00
# compiler definition for a generic C compiler
# based on suncc.py from waf
import os , optparse
2018-09-07 16:27:58 +02:00
from waflib import Errors
2018-01-31 11:48:43 +02:00
from waflib . Tools import ccroot , ar
2018-09-07 16:27:58 +02:00
from waflib . Configure import conf
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
#
# Let waflib provide useful defaults, but
# provide generic_cc as last resort fallback on
# all platforms
#
2018-01-31 11:48:43 +02:00
from waflib . Tools . compiler_c import c_compiler
2018-09-07 16:27:58 +02:00
for key in c_compiler . keys ( ) :
c_compiler [ key ] . append ( ' generic_cc ' )
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
@conf
2010-04-03 09:19:57 +11:00
def find_generic_cc ( conf ) :
2012-02-09 13:08:31 +01:00
v = conf . env
cc = None
2018-09-07 16:27:58 +02:00
if v . CC :
cc = v . CC
elif ' CC ' in conf . environ :
cc = conf . environ [ ' CC ' ]
if not cc :
cc = conf . find_program ( ' cc ' , var = ' CC ' )
if not cc :
conf . fatal ( ' generic_cc was not found ' )
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
try :
conf . cmd_and_log ( cc + [ ' --version ' ] )
except Errors . WafError :
conf . fatal ( ' %r --version could not be executed ' % cc )
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
v . CC = cc
v . CC_NAME = ' generic_cc '
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
@conf
def generic_cc_common_flags ( conf ) :
v = conf . env
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
v . CC_SRC_F = ' '
v . CC_TGT_F = [ ' -c ' , ' -o ' ]
v . CPPPATH_ST = ' -I %s '
v . DEFINES_ST = ' -D %s '
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
if not v . LINK_CC :
v . LINK_CC = v . CC
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
v . CCLNK_SRC_F = ' '
v . CCLNK_TGT_F = [ ' -o ' ]
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
v . LIB_ST = ' -l %s ' # template for adding libs
v . LIBPATH_ST = ' -L %s ' # template for adding libpaths
v . STLIB_ST = ' -l %s '
v . STLIBPATH_ST = ' -L %s '
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
v . cprogram_PATTERN = ' %s '
v . cshlib_PATTERN = ' lib %s .so '
v . cstlib_PATTERN = ' lib %s .a '
2010-04-03 09:19:57 +11:00
2018-09-07 16:27:58 +02:00
def configure ( conf ) :
conf . find_generic_cc ( )
conf . find_ar ( )
conf . generic_cc_common_flags ( )
conf . cc_load_tools ( )
conf . cc_add_flags ( )
conf . link_add_flags ( )