Extension support
g0dil [Fri, 21 Aug 2009 14:10:25 +0000 (14:10 +0000)]
git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@1319 270642c3-0616-0410-b53a-bc976706d245

senf/.gitignore
senf/Ext/.gitignore [new file with mode: 0644]
senf/Ext/Doxyfile [new file with mode: 0644]
senf/Ext/SConscript [new file with mode: 0644]
senf/SConscript
senf/Utils/Console.hh [new file with mode: 0644]
site_scons/senfutil.py

index d215d6d..e75ff76 100644 (file)
@@ -1,2 +1 @@
-/Ext/*/
 /local_config.hh
diff --git a/senf/Ext/.gitignore b/senf/Ext/.gitignore
new file mode 100644 (file)
index 0000000..7feaa12
--- /dev/null
@@ -0,0 +1,2 @@
+Mainpage.dox
+/*/
diff --git a/senf/Ext/Doxyfile b/senf/Ext/Doxyfile
new file mode 100644 (file)
index 0000000..d34a117
--- /dev/null
@@ -0,0 +1,3 @@
+@INCLUDE = "$(TOPDIR)/doclib/Doxyfile.global"
+
+PROJECT_NAME = Extensions
diff --git a/senf/Ext/SConscript b/senf/Ext/SConscript
new file mode 100644 (file)
index 0000000..90dcbc4
--- /dev/null
@@ -0,0 +1,46 @@
+# -*- python -*-
+
+Import('env')
+import SENFSCons, glob, os.path, yaptu
+
+###########################################################################
+
+sconscripts = sorted(glob.glob("*/SConscript"))
+
+EXTENSIONS = []
+for script in sconscripts:
+    name = os.path.split(script)[0]
+    dox = os.path.join(name, 'Mainpage.dox')
+    title = ''
+    if os.path.exists(dox):
+        title = ([''] + [ line.split('\\mainpage',1)[-1].strip() for line in file(dox)
+                            if '\\mainpage' in line ])[-1]
+    EXTENSIONS.append((name, title))
+        
+
+MAINPAGE="""
+/** \mainpage Extensions
+
+    This folder contains additional SENF extensions which are built
+    into the senf libarary but are not part of senf proper.
+
+    \htmlonly
+    <dl>
+
+{{  for name, title in EXTENSIONS:
+      <dt><a href="../../${name}/doc/html/index.html">${name}</a></dt><dd>${title}</a></dd>
+}}
+
+    </dl>
+    \endhtmlonly
+ */
+"""
+
+file("Mainpage.dox","w").write(yaptu.process(MAINPAGE, globals(), env.Dictionary()))
+
+SConscript(sconscripts)
+
+env.Clean('all','Mainpage.dox')
+env.Clean('all_docs','Mainpage.dox')
+
+SENFSCons.Doxygen(env)
index 62838d1..0eb33c6 100644 (file)
@@ -9,6 +9,9 @@ import SENFSCons, glob, os
 if not env.GetOption('clean') and not os.path.exists("local_config.hh"):
     Execute(Touch("local_config.hh"))
 
-SConscript(glob.glob("*/SConscript"))
+# Ext/SConscript is last so it can depend on env vars set by any other script
+# (e.g. $PACKET_BUNDLES)
+SConscript(list(set(glob.glob("*/SConscript")) - set(("Ext/SConscript",))))
+SConscript("Ext/SConscript")
 
 env.InstallSubdir(target = '$INCLUDEINSTALLDIR', source = [ 'config.hh' ])
diff --git a/senf/Utils/Console.hh b/senf/Utils/Console.hh
new file mode 100644 (file)
index 0000000..fecc57c
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id$
+//
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+//     Stefan Bund <g0dil@berlios.de>
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the
+// Free Software Foundation, Inc.,
+// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+/** \file
+    \brief Console public header */
+
+#include <senf/Utils/Console/Console.hh>
+
+\f
+// Local Variables:
+// mode: c++
+// fill-column: 100
+// comment-column: 40
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// End:
index 4aae4da..01eae03 100644 (file)
@@ -58,7 +58,7 @@ def SetupForSENF(env):
     if os.path.exists('senf'):
         print "\nUsing SENF in './senf'\n"
         env.Append( LIBPATH = [ 'senf' ],
-                    CPPPATH = [ 'senf/include' ],
+                    CPPPATH = [ 'senf' ],
                     SENF_BUILDOPTS = [ '${final and "final=1" or None}',
                                        '${debug and "debug=1" or None}',
                                        '${profile and "profile=1" or None}' ],