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