Produfce more detailed statistics in fix-links.py
[senf.git] / SConstruct
index bcfdd21..8ee37de 100644 (file)
@@ -6,6 +6,12 @@ import SENFSCons
 
 ###########################################################################
 
+# This hack is needed for SCons V 0.96.1 compatibility. In current SCons versions
+# we can just use 'env.AlwaysBuild(env.Alias(target), [], action)'
+def PhonyTarget(env, target, action):
+    env.AlwaysBuild(env.Command(target + '.phony', 'SConstruct', env.Action(action)))
+    env.Alias(target, target + '.phony')
+
 def updateRevision(target, source, env):
     rev = env['ENV']['REVISION'][1:]
     if ':' in rev:
@@ -62,6 +68,7 @@ install_all  Install SENF into $PREFIX
 deb          Build debian source and binary package
 debsrc       Build debian source package
 debbin       Build debian binary package
+linklint     Check links of doxygen documentation with 'linklint'
 """)
 
 if os.environ.get('debian_build'):
@@ -124,23 +131,45 @@ libsenf = env.Library(
     SENFSCons.LibPath('senf'),
     Flatten([ env.File(SENFSCons.LibPath(lib)).sources for lib in env['ALLLIBS'] ]))
 env.Default(libsenf)
-env.Alias('install_all', env.Install('$LIBINSTALLDIR', libsenf))
-
-env.AlwaysBuild(
-    env.Alias('deb', [], [ checkLocalConf,
-                           updateRevision,
-                           "$BUILDPACKAGE_COMMAND" ]))
+env.Clean('all', 'libsenf.a')
+env.Alias('all', 'libsenf.a')
 
-env.AlwaysBuild(
-    env.Alias('debsrc', [], [ updateRevision,
-                              "$BUILDPACKAGE_COMMAND -S" ]))
-
-env.AlwaysBuild(
-    env.Alias('debbin', [], [ checkLocalConf,
-                              updateRevision,
-                              "$BUILDPACKAGE_COMMAND -nc" ]))
+env.Alias('install_all', env.Install('$LIBINSTALLDIR', libsenf))
 
 env.Clean('all', [ os.path.join(path,f)
                    for path, subdirs, files in os.walk('.')
                    for pattern in env['CLEAN_PATTERNS']
                    for f in fnmatch.filter(files,pattern) ])
+
+PhonyTarget(env, 'deb', [
+    checkLocalConf,
+    updateRevision,
+    "$BUILDPACKAGE_COMMAND",
+])
+
+PhonyTarget(env, 'debsrc', [
+    updateRevision,
+    "$BUILDPACKAGE_COMMAND -S",
+])
+
+PhonyTarget(env, 'debbin', [
+    checkLocalConf,
+    updateRevision,
+    "$BUILDPACKAGE_COMMAND -nc",
+])
+
+PhonyTarget(env, 'linklint', [
+    'rm -rf linklint',
+    'linklint -doc linklint -net -limit 99999999 `find -type d -name html -printf "/%P/@ "`',
+    '[ ! -r linklint/errorX.html ] || python linklint_addnames.py <linklint/errorX.html >linklint/errorX.html.new',
+    '[ ! -r linklint/errorX.html.new ] || mv linklint/errorX.html.new linklint/errorX.html',
+    '[ ! -r linklint/errorAX.html ] || python linklint_addnames.py <linklint/errorAX.html >linklint/errorAX.html.new',
+    '[ ! -r linklint/errorAX.html.new ] || mv linklint/errorAX.html.new linklint/errorAX.html',
+    'echo -e "\\nLokal link check results: linklint/index.html\\nRemote link check results: linklint/urlindex.html\\n"',
+])
+
+PhonyTarget(env, 'fixlinks', [
+    'python doclib/fix-links.py -v -s .svn -s linklint -s debian linklint/errorX.txt linklint/errorAX.txt',
+])
+
+env.Clean('all', env.Dir('linklint'))