Layout fixes (again IE .. :-( )
[senf.git] / satscons / SatSCons.py
index 83c468e..6c8bcc9 100644 (file)
@@ -1,8 +1,15 @@
 import os.path, SCons.Options, SCons.Environment, SCons.Script.SConscript, glob
 
+SCONS_TOOLS = [
+    "Doxygen",
+    "Dia2Png",
+]
+
 opts = None
 finalizers = []
 
+basedir = os.path.split(__file__)[0]
+
 def InitOpts():
     global opts
     if opts is not None: return
@@ -28,7 +35,7 @@ def UseBoost():
     Finalizer(FinalizeBoost)
 
 def FinalizeBoost(env):
-    env.Tool('BoostUnitTests', [os.path.split(__file__)[0]])
+    env.Tool('BoostUnitTests', [basedir])
 
     if env['BOOST_TOOLSET']:
         runtime = ""
@@ -64,12 +71,6 @@ def FinalizeSTLPort(env):
             env.Append(LIBS = [ '$STLPORT_DEBUGLIB' ],
                        CPPDEFINES = [ '_STLP_DEBUG' ])
 
-def UseDoxygen():
-    Finalizer(FinalizeDoxygen)
-
-def FinalizeDoxygen(env):
-    env.Tool('Doxygen', [os.path.split(__file__)[0]])
-    
 def MakeEnvironment():
     global opts, finalizers
     InitOpts()
@@ -85,6 +86,9 @@ def MakeEnvironment():
     for finalizer in finalizers:
         finalizer(env)
 
+    for tool in SCONS_TOOLS:
+        env.Tool(tool, [basedir])
+
     env.Append(CXXFLAGS = [ '-Wall', '-Woverloaded-virtual', '-Wno-long-long' ],
                LOCALLIBDIR = [ '#' ],
                LIBPATH = [ '$LOCALLIBDIR' ])
@@ -147,18 +151,18 @@ def Objects(env, sources, testSources = None, LIBS = []):
 
     return objects
 
-def Doxygen(env, sources, testSources = None, target='doc', image = []):
-    if type(sources) == type(()):
-        testSources = sources[1]
-        sources = sources[0]
-
-    doc = env.Doxygen(
-        target = target,
-        source = sources,
-        image = image)
-
-    env.Alias('all_docs', doc)
-    return doc
+def DoxyGlob(exclude=[]):
+    sources = [ f
+                for ext in ("cci", "ct", "cti", "h", "hh", "ih", "mmc", "dox")
+                for f in glob.glob("*."+ext)
+                if f not in exclude ]
+    return sources
+
+def Doxygen(env, doxyfile="Doxyfile", extra_sources = []):
+    docs = env.Doxygen(doxyfile)
+    env.Depends(docs,extra_sources)
+    env.Alias('all_docs', *docs)
+    return docs
 
 def Lib(env, library, sources, testSources = None, LIBS = []):
     objects = Objects(env,sources,testSources,LIBS=LIBS)