#! /usr/bin/env python from waflib import Build def build(bld): # Call make for building, but keep waf for install/uninstall # there is no 'clean' here def make_all(tsk): # create the output folder in advance d = tsk.generator.path d.get_bld().mkdir() ret = tsk.generator.bld.exec_command('make all', cwd=d.abspath()) # install the files by waf - it might be more maintainable to do it through make though tsk.set_outputs(d.get_bld().ant_glob('*.so')) tsk.generator.bld.install_files('${LIBDIR}', tsk.outputs, postpone=False) return ret # the attribute 'always' is used to force the make execution, else # the make command will be called only once bld(rule=make_all, always=True, name='call make') # for a hybrid build... bld.post_mode = Build.POST_LAZY bld.add_group() bld.read_shlib('foo', paths=[bld.path.get_bld().abspath()]) bld.program(source='main.c', target='a', use='foo')