X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=site_scons%2FSENFSCons.py;h=7ff62727c576dd10f288ea0127005c08e8efabf3;hb=8c6873a925c79e6bb640f82895b31f4cbd84ef30;hp=65b882eb594ad5189aebe9aa3b756a0c35e1baae;hpb=a5d6a20ef608461a1932b4983139e8a3c1facada;p=senf.git diff --git a/site_scons/SENFSCons.py b/site_scons/SENFSCons.py index 65b882e..7ff6272 100644 --- a/site_scons/SENFSCons.py +++ b/site_scons/SENFSCons.py @@ -1,4 +1,4 @@ -import os.path, glob +import os.path, glob, yaptu import SCons.Options, SCons.Environment, SCons.Script.SConscript, SCons.Node.FS import SCons.Defaults, SCons.Action from SCons.Script import * @@ -44,7 +44,9 @@ def Doxygen(env, doxyfile = "Doxyfile", extra_sources = [], output_directory = " denv.update(kw) return { 'DOXYENV' : denv, 'MODULE' : module, - 'OUTPUT_DIRECTORY': output_directory }; + 'OUTPUT_DIRECTORY': output_directory, + 'DOXYGENCOM' : "site_scons/lib/doxygen.sh $DOXYOPTS $SOURCE", + }; opts = [ '--tagfile-name', '"${MODULE}.tag"', '--output-dir', '$OUTPUT_DIRECTORY' ] @@ -52,7 +54,7 @@ def Doxygen(env, doxyfile = "Doxyfile", extra_sources = [], output_directory = " # (need to exclude the 'clean' case, otherwise we'll have duplicate nodes) if not env.GetOption('clean'): tagfile = env.Doxygen(doxyfile, DOXYOPTS = opts + [ '--tagfile' ], - **vars(generate_tagfile = 'doc/${MODULE}.tag')) + **vars(generate_tagfile='${OUTPUT_DIRECTORY}/${MODULE}.tag')) env.Append(ALL_TAGFILES = [ tagfile[0].abspath ]) env.Depends(tagfile, [ env.File('#/site_scons/lib/doxygen.sh'), env.File('#/site_scons/lib/tag-munge.xsl') ]) @@ -62,7 +64,7 @@ def Doxygen(env, doxyfile = "Doxyfile", extra_sources = [], output_directory = " # Rule to generate HTML documentation doc = env.Doxygen(doxyfile, DOXYOPTS = opts + [ '--tagfiles', '"$ALL_TAGFILES"', '--html' ], - **vars(html = 'YES')) + **vars(html='YES', tagfiles='$ALL_TAGFILES')) env.Depends(doc, [ env.File('#/site_scons/lib/doxygen.sh'), env.File('#/site_scons/lib/html-munge.xsl') ]) @@ -72,7 +74,7 @@ def Doxygen(env, doxyfile = "Doxyfile", extra_sources = [], output_directory = " if env.GetOption('clean'): env.Depends(doc, extra_sources) else: - env.Depends(doc, env.CopyToDir(doc[0].dir, extra_sources)) + env.Depends(tagfile, env.CopyToDir(doc[0].dir, extra_sources)) # Install documentation into DOCINSTALLDIR env.InstallDir(env.Dir('$DOCINSTALLDIR').Dir(doc[0].dir.dir.get_path(env.Dir('#'))), doc[0].dir, @@ -95,6 +97,37 @@ def AllIncludesHH(env, exclude=[]): for f in headers ])) env.Clean(env.Alias('all'), target) + +INDEXPAGE=""" +/** \mainpage ${TITLE} + + ${TEXT} + + \htmlonly +
+ +{{ for name, title in SUBPAGES: +
${name}
${title}
+}} + +
+ \endhtmlonly + */ +""" + +def IndexPage(env, name, title, text=""): + SUBPAGES = [] + for dox in sorted(glob.glob("*/Mainpage.dox")): + subtitle = ([None] + [ line.split('\\mainpage',1)[-1].strip() for line in file(dox) + if '\\mainpage' in line ])[-1] + if subtitle: + SUBPAGES.append( (dox.split('/',1)[0], subtitle) ) + file(name,"w").write(yaptu.process( + INDEXPAGE, globals(), { 'TITLE': title, 'TEXT': text, 'SUBPAGES': SUBPAGES })) + env.Clean('all',name) + env.Clean('all_docs',name) + + ########################################################################### # The following functions serve as simple macros for most SConscript files #