You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.3 KiB
Python
61 lines
1.3 KiB
Python
#! /usr/bin/env python
|
|
# encoding: utf-8
|
|
# DC 2008
|
|
# Thomas Nagy 2010 (ita)
|
|
|
|
import re
|
|
|
|
from waflib import Utils, Task, TaskGen, Logs
|
|
from TaskGen import feature, before, after, extension
|
|
from waflib.Tools import ccroot
|
|
|
|
IS_MODULE_R = re.compile('module ([a-z]*)')
|
|
USE_MODULE_R = re.compile('use ([a-z]*)')
|
|
|
|
@extension('.a')
|
|
def hook(self, node):
|
|
self.create_compiled_task('fakecc', node)
|
|
|
|
def ismodule(node):
|
|
deps = []
|
|
for l in node.read().splitlines():
|
|
m = IS_MODULE_R.match(l)
|
|
if m:
|
|
deps.append(m.group(1) + '.mod')
|
|
return deps
|
|
|
|
def usemodule(node):
|
|
deps = []
|
|
for l in node.read().splitlines():
|
|
m = USE_MODULE_R.match(l)
|
|
if m:
|
|
deps.append(m.group(1) + '.mod')
|
|
return deps
|
|
|
|
def compile(tsk):
|
|
tsk.outputs[0].write('compiled')
|
|
m = ismodule(tsk.inputs[0])
|
|
if m:
|
|
print("%s declares module %s" % (tsk.inputs[0], m[0]))
|
|
t2 = open(m[0], 'w')
|
|
try:
|
|
t2.write('module compiled')
|
|
finally:
|
|
t2.close()
|
|
|
|
class fakecc(Task.Task):
|
|
color = 'YELLOW'
|
|
def run(self):
|
|
cmd = []
|
|
if not len(self.outputs) == len(self.inputs) == 1:
|
|
pass
|
|
|
|
bnodes = self.outputs
|
|
m = usemodule(self.inputs[0])
|
|
if m:
|
|
print("%s requires module %s" % (self.inputs[0].abspath(), m[0]))
|
|
#bnodes.append(self.generator.bld.bldnode.exclusive_build_node(m[0]))
|
|
|
|
compile(self)
|
|
|