The following can be used to add asm outputs to a c++ task (gcc):
from waflib import Task
from waflib.TaskGen import feature, after_method
@feature('cxx')
@after_method('process_source')
def add_asm_outputs(self):
for tsk in self.compiled_tasks:
node2 = tsk.outputs[0].change_ext('.s')
tsk.env.append_value('CXXFLAGS', '-Wa,-adhln=%s' % node2.abspath())
tsk.outputs.append(node2)