12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #! /usr/bin/env python
- def configure(conf):
- pass
- def build(bld):
- bld.process(name='foo', version='1.0')
- bld.process(name='bar', use='foo')
- ########################################################################
- # user api
- from waflib.Build import BuildContext
- def process(ctx, *k, **kw):
- kw['features'] = 'proc'
- return ctx(*k, **kw)
- BuildContext.process = process
- # create the tasks
- from waflib.TaskGen import feature
- @feature('proc')
- def create_a_few_tasks(self):
- fetch = self.create_task('process')
- fetch.outputs = [self.path.find_or_declare(self.name + '.fetch')]
- fetch.env.A = getattr(self, 'version', '') # rebuild if changes
- configure = self.create_task('process', fetch.outputs)
- configure.outputs = [self.path.find_or_declare(self.name + '.configure')]
- build = self.create_task('process', configure.outputs)
- build.outputs = [self.path.find_or_declare(self.name + '.build')]
- self.install = install = self.create_task('process', build.outputs)
- install.outputs = [self.path.find_or_declare(self.name + '.install')]
- if getattr(self, 'use', None):
- lst = self.to_list(self.use)
- for x in lst:
- tg = self.bld.get_tgen_by_name(x)
- fetch.inputs.extend(tg.install.outputs)
- # task classes
- from waflib.Task import Task
- class process(Task):
- vars = ['A', 'B'] # change env.A to trigger a rebuild...
- def run(self):
- # add your operations here
- self.outputs[0].write('all ok')
|