Search code examples
pythonbuildbuild-processwaf

How to determine tools chosen by waf?


How can I determine which specific tool waf chose as 'cxx_compiler' etc? Exempli gratia:

def configure(ctx):
   print('Running ' + ctx.cmd + ' in ' + ctx.path.abspath() )
   ctx.load('compiler_c')
   ctx.load('compiler_cxx')

def build(ctx):
   print('Running ' + ctx.cmd + ' in ' + ctx.path.abspath() )
   # Here print which C++ compiler was chosen
   print 'Building cpp files with %s' % WHAT_GOES_HERE

Solution

  • def options(opt):
        opt.load('compiler_c')
        opt.load('compiler_cxx')
    
    def configure(cfg):
        cfg.load('compiler_c')
        cfg.load('compiler_cxx')
    
    def build(bld):
        print "Compiler is CC_NAME  %s  CC  %s"%(bld.env.CC_NAME,bld.env.CC)
        print "Compiler is CXX_NAME %s  CXX %s"%(bld.env.CXX_NAME,bld.env.CXX)
    

    Will give you:

    D:\temp>waf.bat configure build --check-c-compiler=gcc --check-cxx-compiler=g++
    Setting top to                           : D:\temp
    Setting out to                           : D:\temp\build
    Checking for 'gcc' (c compiler)          : c:\tools\gcc\bin\gcc.exe
    Checking for 'g++' (c++ compiler)        : c:\tools\gcc\bin\g++.exe
    'configure' finished successfully (0.191s)
    Waf: Entering directory `D:\temp\build'
    Compiler is CC_NAME  gcc  CC  ['c:\\tools\\gcc\\bin\\gcc.exe']
    Compiler is CXX_NAME gcc  CXX ['c:\\tools\\gcc\\bin\\g++.exe']
    Waf: Leaving directory `D:\temp\build'
    'build' finished successfully (0.008s)