git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@129 270642c3-0616-0410...
[senf.git] / satscons / Doxygen.py
1 import SCons.Script.SConscript
2 import SCons.Builder
3 import SCons.Defaults
4 import os.path
5
6 def replace_ext(n,ext):
7     base,ext = os.path.splitext(n)
8     return base+ext
9
10 def Doxygen(env, target, source, image=[]):
11     path, name = os.path.split(str(target))
12     stamp = os.path.join(path, '.'+name+'.stamp')
13     dir = env.Dir(target)
14     env.Depends(dir,
15                 [ env.Command(os.path.splitext(img)[0]+".png", img,
16                               [ 'TERM=dumb make -f imgconvert.mak $TARGET' ])
17                   for img in image ] +
18                 [ env.Command(stamp, source,
19                               [ 'cd $TARGET.dir && $DOXYGENCOM',
20                                 'cd $TARGET.dir/doc/html && (sed -ne \'1,/<table>/p\' <annotated.html && grep -F \'<tr>\' <annotated.html | sort -ft\'>\' -k4 && sed -ne \'/<\\/table>/,$$p\' <annotated.html) >annotated.html.new && mv annotated.html.new annotated.html',
21                                 'touch $TARGET' ],
22                               source_scanner = SCons.Defaults.ObjSourceScan) ])
23     env.Clean(stamp, dir)
24     return dir
25
26 def generate(env):
27     env['DOXYGENCOM'] = 'doxygen'
28     env.__class__.Doxygen = Doxygen
29
30 def exists(env):
31     return 1