fixed some file headers to the new format
[senf.git] / senfscons / SENFSCons.py
index d2a170a..61f07ea 100644 (file)
@@ -78,6 +78,8 @@ def InitOpts():
     opts.Add('DOCINSTALLDIR', 'Documentation install dir', '$PREFIX/doc')
     opts.Add('CPP_INCLUDE_EXTENSIONS', 'File extensions to include in source install',
              [ '.h', '.hh', '.ih', '.mpp', '.cci', '.ct', '.cti', '.mpp' ])
+    opts.Add('CPP_EXCLUDE_EXTENSIONS', 'File extensions to exclude from source install',
+             [ '.test.hh' ])
 
 # A finalizer is any callable object. All finalizers will be called
 # in MakeEnvironment. We use them so every finalizer has knowledge of
@@ -148,8 +150,9 @@ def FinalizeBoost(env):
         if runtime: runtime = "-" + runtime
         env['BOOST_VARIANT'] = "-" + env['BOOST_TOOLSET'] + runtime
 
-    env['BOOSTTESTLIB'] = 'libboost_unit_test_framework' + env['BOOST_VARIANT']
-    env['BOOSTREGEXLIB'] = 'libboost_regex' + env['BOOST_VARIANT']
+    env['BOOSTTESTLIB'] = 'boost_unit_test_framework' + env['BOOST_VARIANT']
+    env['BOOSTREGEXLIB'] = 'boost_regex' + env['BOOST_VARIANT']
+    env['BOOSTFSLIB'] = 'boost_filesystem' + env['BOOST_VARIANT']
 
     env.Append(LIBPATH = [ '$BOOST_LIBDIR' ],
                CPPPATH = [ '$BOOST_INCLUDES' ])
@@ -315,7 +318,7 @@ def LibPath(lib): return '$LOCALLIBDIR/lib%s.a' % lib
 # provide both \a sources and \a testSources.
 #
 # \ingroup target
-def Objects(env, sources, testSources = None, LIBS = [], OBJECTS = []):
+def Objects(env, sources, testSources = None, LIBS = [], OBJECTS = [], no_includes = False):
     if type(sources) == type(()):
         testSources = sources[1]
         sources = sources[0]
@@ -324,14 +327,14 @@ def Objects(env, sources, testSources = None, LIBS = [], OBJECTS = []):
 
     objects = None
     if sources:
-        objects = env.Object([
-            source
-            for source in sources
-            if not str(source).endswith('.o') ]) + [
-            source
-            for source in sources
-            if str(source).endswith('.o') ]
-        
+        obsources = [ source
+                      for source in sources
+                      if not str(source).endswith('.o') ]
+        objects = [ source
+                    for source in sources
+                    if str(source).endswith('.o') ]
+        if obsources:
+            objects += env.Object(obsources)
 
     if testSources:
         test = env.BoostUnitTests(
@@ -350,12 +353,24 @@ def Objects(env, sources, testSources = None, LIBS = [], OBJECTS = []):
     return objects
 
 def InstallIncludeFiles(env, files):
+    # Hrmpf ... why do I need this in 0.97??
+    if env.GetOption('clean'):
+        return
     target = env.Dir(env['INCLUDEINSTALLDIR'])
     base = env.Dir(env['INSTALL_BASE'])
     for f in files:
         src = env.File(f)
         env.Alias('install_all', env.Install(target.Dir(src.dir.get_path(base)), src))
 
+def InstallSourceIncludes(env, sources):
+    target = env.Dir(env['INCLUDEINSTALLDIR']).Dir(
+        env.Dir('.').get_path(env.Dir(env['INSTALL_BASE'])))
+    install = env.InstallIncludes( target = target,
+                                   source = [ type(x) is str and env.File(x) or x
+                                              for x in sources ],
+                                   INSTALL_BASE = env.Dir('.') )
+    env.Alias( 'install_all', install )
+
 def InstallWithSources(env, targets, dir, sources, testSources = [], no_includes = False):
     if type(sources) is type(()):
         sources, testSources = sources
@@ -365,17 +380,14 @@ def InstallWithSources(env, targets, dir, sources, testSources = [], no_includes
         testSources = [ testSources ]
 
     installs = [ env.Install(dir, targets) ]
+    env.Alias( 'install_all', installs[:] )
 
     if not no_includes:
-        target = env.Dir(env['INCLUDEINSTALLDIR']).Dir(
-            env.Dir('.').get_path(env.Dir(env['INSTALL_BASE'])))
-        source = targets
+        sources = targets
         if testSources:
-            source.append( env.File('.test.bin') )
-            installs.append(env.InstallIncludes(
-                target = target,
-                source = targets,
-                INSTALL_BASE = env.Dir('.') ))
+            sources.append( env.File('.test.bin') )
+        installs.append(
+            InstallSourceIncludes(env, sources))
 
     return installs
 
@@ -588,8 +600,7 @@ def Lib(env, library, sources, testSources = None, LIBS = [], OBJECTS = [], no_i
         env.Default(lib)
         env.Append(ALLLIBS = library)
         env.Alias('default', lib)
-        install = InstallWithSources(env, lib, '$LIBINSTALLDIR', sources, testSources, no_includes)
-        env.Alias('install_all', install)
+        InstallWithSources(env, lib, '$LIBINSTALLDIR', sources, testSources, no_includes)
     return lib
 
 ## \brief Build Object from multiple sources
@@ -600,8 +611,7 @@ def Object(env, target, sources, testSources = None, LIBS = [], OBJECTS = [], no
         ob = env.Command(target+".o", objects, "ld -r -o $TARGET $SOURCES")
         env.Default(ob)
         env.Alias('default', ob)
-        install = InstallWithSources(env, ob, '$OBJINSTALLDIR', sources, testSources, no_includes)
-        env.Alias('install_all', install)
+        InstallWithSources(env, ob, '$OBJINSTALLDIR', sources, testSources, no_includes)
     return ob
 
 ## \brief Build executable
@@ -624,9 +634,7 @@ def Binary(env, binary, sources, testSources = None, LIBS = [], OBJECTS = [], no
         env.Default(program)
         env.Depends(program, [ env.File(LibPath(x)) for x in LIBS ])
         env.Alias('default', program)
-        install = InstallWithSources(env, program, '$BININSTALLDIR', sources, testSources,
-                                     no_includes)
-        env.Alias('install_all', install)
+        InstallWithSources(env, program, '$BININSTALLDIR', sources, testSources, no_includes)
     return program
 
 def AllIncludesHH(env, headers):