+def HEIMDAL_GENERATOR(bld, name, rule, source='', target='',
+ group='generators', enabled=True,
+ vars=None):
+ '''A generic source generator target'''
+
+ if not SET_TARGET_TYPE(bld, name, 'GENERATOR'):
+ return
+
+ if not enabled:
+ return
+
+ bld.SET_BUILD_GROUP(group)
+ t = bld(
+ rule=rule,
+ source=bld.EXPAND_VARIABLES(source, vars=vars),
+ target=target,
+ shell=isinstance(rule, str),
+ on_results=True,
+ before='cc',
+ ext_out='.c',
+ name=name)
+
+ return t
+Build.BuildContext.HEIMDAL_GENERATOR = HEIMDAL_GENERATOR
+
+bld.HEIMDAL_GENERATOR(