#! /usr/bin/env python # encoding: utf-8 # Thomas Nagy, 2011 (ita) """ Map a compilation failure to a success status. People playing with C++ templates might need this. """ top = '.' out = 'build' def options(opt): opt.load('compiler_cxx') def configure(conf): conf.load('compiler_cxx') def build(bld): bld.objects(source='success.cpp', target='ok') bld.objects(source='fail.cpp', target='fail', features='fail') ################################################################## # the feature 'fail' is defined below from waflib.Tools.cxx import cxx # our task class class cxxfail(cxx): def run(self): ret = super(cxxfail, self).run() self.outputs[0].write('just a simulation') return not ret # @extension would apply this to all through TaskGen.mappings def one_more_mapping(self, node): return self.create_compiled_task('cxxfail', node) from waflib.TaskGen import feature, before @before('process_source') @feature('fail') def remap_failure_to_success(self): # override self.mappings = dict(self.mappings) # then change the extension processing self.mappings['.cpp'] = one_more_mapping