diff --git a/__init__.py b/__init__.py index 5e91fcc29..40f2c6a1e 100644 --- a/__init__.py +++ b/__init__.py @@ -7,6 +7,9 @@ # # Copyright (C) 2007 Christoph Boehme # +# Copyright (C) 2012 Dirk Baechle +# Copyright (C) 2012 Eric Anderson +# # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License version 2.1 as published by the Free Software Foundation. @@ -293,8 +296,30 @@ def DoxyEmitter(target, source, env): tagfile = os.path.join(conf_dir, tagfile) targets.append(env.File(tagfile)) + # don't clobber targets + for node in targets: + env.Precious(node) + + # set up cleaning stuff + for node in targets: + env.Clean(node, node) + return (targets, source) +def generate_doxygen_commands(source, target, env, for_signature): + + """Generate the doxygen command line (easy) and the post-execution + timestamping (harder). The second part requires us to know which + directories are being built, which is why we do this as a Generator + (after the Emitter has run)""" + + dox_cmd = "cd ${SOURCE.dir} && ${DOXYGEN} ${SOURCE.file}" + timestamp_cmds = ["date > %s"%(str(t)) for t in target] + print dox_cmd + print timestamp_cmds + return [dox_cmd] + timestamp_cmds + + def generate(env): """ Add builders and construction variables for the @@ -308,7 +333,7 @@ def generate(env): import SCons.Builder doxyfile_builder = SCons.Builder.Builder( - action = "cd ${SOURCE.dir} && ${DOXYGEN} ${SOURCE.file}", + generator = generate_doxygen_commands, emitter = DoxyEmitter, target_factory = env.fs.Entry, single_source = True,