1#! /usr/bin/env python 2# encoding: utf-8 3# WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file 4 5from waflib import Utils,Errors 6from waflib.Configure import conf 7def get_extensions(lst): 8 ret=[] 9 for x in Utils.to_list(lst): 10 if not isinstance(x,str): 11 x=x.name 12 ret.append(x[x.rfind('.')+1:]) 13 return ret 14def sniff_features(**kw): 15 exts=get_extensions(kw['source']) 16 typ=kw['typ'] 17 feats=[] 18 for x in'cxx cpp c++ cc C'.split(): 19 if x in exts: 20 feats.append('cxx') 21 break 22 if'c'in exts or'vala'in exts or'gs'in exts: 23 feats.append('c') 24 for x in'f f90 F F90 for FOR'.split(): 25 if x in exts: 26 feats.append('fc') 27 break 28 if'd'in exts: 29 feats.append('d') 30 if'java'in exts: 31 feats.append('java') 32 return'java' 33 if typ in('program','shlib','stlib'): 34 will_link=False 35 for x in feats: 36 if x in('cxx','d','fc','c'): 37 feats.append(x+typ) 38 will_link=True 39 if not will_link and not kw.get('features',[]): 40 raise Errors.WafError('Cannot link from %r, try passing eg: features="c cprogram"?'%kw) 41 return feats 42def set_features(kw,typ): 43 kw['typ']=typ 44 kw['features']=Utils.to_list(kw.get('features',[]))+Utils.to_list(sniff_features(**kw)) 45@conf 46def program(bld,*k,**kw): 47 set_features(kw,'program') 48 return bld(*k,**kw) 49@conf 50def shlib(bld,*k,**kw): 51 set_features(kw,'shlib') 52 return bld(*k,**kw) 53@conf 54def stlib(bld,*k,**kw): 55 set_features(kw,'stlib') 56 return bld(*k,**kw) 57@conf 58def objects(bld,*k,**kw): 59 set_features(kw,'objects') 60 return bld(*k,**kw) 61