waf

FORK: waf with some random patches
git clone https://git.neptards.moe/neptards/waf.git
Log | Files | Refs | README

fakecc.py (1285B)


      1 #! /usr/bin/env python
      2 # encoding: utf-8
      3 # DC 2008
      4 # Thomas Nagy 2010 (ita)
      5 
      6 import re
      7 
      8 from waflib import Utils, Task, TaskGen, Logs
      9 from TaskGen import feature, before, after, extension
     10 from waflib.Tools import ccroot
     11 
     12 IS_MODULE_R = re.compile('module ([a-z]*)')
     13 USE_MODULE_R = re.compile('use ([a-z]*)')
     14 
     15 @extension('.a')
     16 def hook(self, node):
     17 	self.create_compiled_task('fakecc', node)
     18 
     19 def ismodule(node):
     20 	deps = []
     21 	for l in node.read().splitlines():
     22 		m = IS_MODULE_R.match(l)
     23 		if m:
     24 			deps.append(m.group(1) + '.mod')
     25 	return deps
     26 
     27 def usemodule(node):
     28 	deps = []
     29 	for l in node.read().splitlines():
     30 		m = USE_MODULE_R.match(l)
     31 		if m:
     32 			deps.append(m.group(1) + '.mod')
     33 	return deps
     34 
     35 def compile(tsk):
     36 	tsk.outputs[0].write('compiled')
     37 	m = ismodule(tsk.inputs[0])
     38 	if m:
     39 		print("%s declares module %s" % (tsk.inputs[0], m[0]))
     40 		t2 = open(m[0], 'w')
     41 		try:
     42 			t2.write('module compiled')
     43 		finally:
     44 			t2.close()
     45 
     46 class fakecc(Task.Task):
     47 	color = 'YELLOW'
     48 	def run(self):
     49 		cmd = []
     50 		if not len(self.outputs) == len(self.inputs) == 1:
     51 			pass
     52 
     53 		bnodes = self.outputs
     54 		m = usemodule(self.inputs[0])
     55 		if m:
     56 			print("%s requires module %s" % (self.inputs[0].abspath(), m[0]))
     57 			#bnodes.append(self.generator.bld.bldnode.exclusive_build_node(m[0]))
     58 
     59 		compile(self)
     60