summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'BuildTools/SCons')
-rw-r--r--BuildTools/SCons/SConstruct6
-rw-r--r--BuildTools/SCons/Tools/SLOCCount.py17
2 files changed, 23 insertions, 0 deletions
diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
index feb50d0..a67817a 100644
--- a/BuildTools/SCons/SConstruct
+++ b/BuildTools/SCons/SConstruct
@@ -62,6 +62,7 @@ if env["PLATFORM"] == "win32" :
#So we don't need to escalate with UAC
if "TMP" is os.environ.keys() :
env['ENV']['TMP'] = os.environ['TMP']
+env.Tool("SLOCCount", toolpath = ["#/BuildTools/SCons/Tools"])
# Override SConscript to handle tests
oldSConscript = SConscript
@@ -497,6 +498,11 @@ for stage in ["flags", "build", "test"] :
env["SCONS_STAGE"] = stage
SConscript(dirs = map(lambda x : "#/" + x, modules))
+# SLOCCount
+if ARGUMENTS.get("sloccount", False) :
+ for project in env["PROJECTS"] :
+ env.SLOCCount("#/" + project)
+
################################################################################
# Print summary
################################################################################
diff --git a/BuildTools/SCons/Tools/SLOCCount.py b/BuildTools/SCons/Tools/SLOCCount.py
new file mode 100644
index 0000000..fd09abe
--- /dev/null
+++ b/BuildTools/SCons/Tools/SLOCCount.py
@@ -0,0 +1,17 @@
+import SCons.Util, os.path, os
+
+def generate(env) :
+ def createSLOCCount(env, source) :
+ myenv = env.Clone()
+ myenv["ENV"]["HOME"] = os.environ["HOME"]
+ source = myenv.Dir(source)
+ target = myenv.File("#/" + source.path + ".sloccount")
+ # FIXME: There's probably a better way to force building the .sc
+ if os.path.exists(target.abspath) :
+ os.unlink(target.abspath)
+ return myenv.Command(target, source, [SCons.Action.Action("sloccount --duplicates --wide --details " + source.path + " > $TARGET", cmdstr = "$GENCOMSTR")])
+
+ env.AddMethod(createSLOCCount, "SLOCCount")
+
+def exists(env) :
+ return True