forked from mirror/waf
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.
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
#! /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')
|
|
|