Add tools to senfutil.py
[senf.git] / site_scons / senfutil.py
index 25e1249..73f6b26 100644 (file)
@@ -1,6 +1,13 @@
 import os.path
 from SCons.Script import *
 
+# Fix for SCons 0.97 compatibility
+try:
+    Variables
+except NameError: 
+    Variables = Options
+    BoolVariable = BoolOption
+
 def parseLogOption(value):
     stream, area, level = ( x.strip() for x in value.strip().split('|') )
     stream = ''.join('(%s)' % x for x in stream.split('::') )
@@ -24,7 +31,7 @@ class BuildTypeOptions:
 
 def parseArguments(env, *defs):
     vars = Variables(args=ARGUMENTS)
-    vars.AddVariables(*defs)
+    for d in defs : vars.Add(d)
     vars.Update(env)
     env.Help("""
 Any construction environment variable may be set from the scons
@@ -37,7 +44,9 @@ of variables) using
 Special command line parameters:
 """)
     env.Help(vars.GenerateHelpText(env))
-    for k,v in vars.UnknownVariables().iteritems():
+    try                  : unknv = vars.UnknownVariables()
+    except AttributeError: unknv = vars.UnknownOptions()
+    for k,v in unknv.iteritems():
         if k.endswith('+'):
             env.Append(**{k[:-1]: v})
         else:
@@ -51,8 +60,13 @@ Special command line parameters:
 # c) check for a local SENF, set options accordingly and update that SENF if needed
 
 def SetupForSENF(env, senf_paths = []):
-    senf_paths.extend(('senf', '../senf', os.path.dirname(os.path.dirname(__file__)),
-                       '/usr/local', '/usr'))
+    senfutildir = os.path.dirname(__file__)
+    senf_paths.extend(('senf', '../senf', os.path.dirname(senfutildir), '/usr/local', '/usr'))
+    tooldir = os.path.join(senfutildir, 'site_tools')
+
+    env.Tool('Boost',       [ tooldir ])
+    env.Tool('PhonyTarget', [ tooldir ])
+
     env.Append(
         LIBS              = [ 'senf', 'rt', '$BOOSTREGEXLIB',
                               '$BOOSTIOSTREAMSLIB', '$BOOSTSIGNALSLIB',
@@ -136,3 +150,12 @@ def DefaultOptions(env):
         LINKFLAGS_normal = [ '-Wl,-S' ],
         LINKFLAGS_debug  = [ '-g' ],
     )
+
+def Glob(env, exclude=[], subdirs=[]):
+    testSources = glob.glob("*.test.cc")
+    sources = [ x for x in glob.glob("*.cc") if x not in testSources and x not in exclude ]
+    for subdir in subdirs:
+        testSources += glob.glob(os.path.join(subdir,"*.test.cc"))
+        sources += [ x for x in glob.glob(os.path.join(subdir,"*.cc"))
+                     if x not in testSources and x not in exclude ]
+    return (sources, testSources)