$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r51000 - in sandbox/SCons: . libs tools/scons
From: loonycyborg_at_[hidden]
Date: 2009-02-03 17:09:08
Author: loonycyborg
Date: 2009-02-03 17:09:08 EST (Tue, 03 Feb 2009)
New Revision: 51000
URL: http://svn.boost.org/trac/boost/changeset/51000
Log:
Added support for debug/release and static/dynamic build variants.
Added:
   sandbox/SCons/tools/scons/boost-build-variants.py   (contents, props changed)
Text files modified: 
   sandbox/SCons/SConstruct                |     2 +-                                      
   sandbox/SCons/libs/SConscript           |    24 ++++++++++++++++++------                
   sandbox/SCons/tools/scons/boost-libs.py |     5 ++++-                                   
   3 files changed, 23 insertions(+), 8 deletions(-)
Modified: sandbox/SCons/SConstruct
==============================================================================
--- sandbox/SCons/SConstruct	(original)
+++ sandbox/SCons/SConstruct	2009-02-03 17:09:08 EST (Tue, 03 Feb 2009)
@@ -1,7 +1,7 @@
 # vi: syntax=python:et:ts=4
 EnsureSConsVersion(0, 98, 5)
 
-env = Environment(toolpath = ["tools/scons"], tools = ["default", "boost-libs"])
+env = Environment(toolpath = ["tools/scons"], tools = ["default", "boost-libs", "boost-build-variants"])
 Export("env")
 
 SConscript("libs/SConscript")
Modified: sandbox/SCons/libs/SConscript
==============================================================================
--- sandbox/SCons/libs/SConscript	(original)
+++ sandbox/SCons/libs/SConscript	2009-02-03 17:09:08 EST (Tue, 03 Feb 2009)
@@ -2,12 +2,24 @@
 Import("env")
 env.Append(
     CPPPATH = "#/",
-    CXXFLAGS = "-ftemplate-depth-128"
+    CPPDEFINES = ["BOOST_ALL_NO_LIB=1"],
+    CCFLAGS = Split("$DEBUG_RELEASE_CCFLAGS $THREADING_CCFLAGS"),
+    LIBFLAGS = Split("$DEBUG_RELEASE_LIBFLAGS $THREADING_LIBFLAGS")
     )
 
 sconscripts = Glob("*/build/SConscript")
-for sconscript in sconscripts:
-    lib = str(sconscript.get_dir().up())
-    VariantDir(src_dir = lib + "/src", variant_dir = "#/bin.SCons/" + lib, duplicate = False)
-    VariantDir(src_dir = lib + "/build", variant_dir = lib + "/src", duplicate = False)
-    SConscript("#/bin.SCons/" + lib + "/SConscript")
+for debug_release in ["debug", "release"]:
+    for linking in ["static", "dynamic"]:
+        env["DEBUG_RELEASE_CCFLAGS"] = env.get(debug_release.upper() + "_CCFLAGS")
+        env["DEBUG_RELEASE_LIBFLAGS"] = env.get(debug_release.upper() + "_LIBFLAGS")
+        env.AppendUnique(CPPDEFINES = ["${LINK_DYNAMIC and 'BOOST_' + BOOST_LIB + '_DYN_LINK=1' or []}"])
+        if linking == "dynamic":
+            env["LINK_DYNAMIC"] = True
+        else:
+            env["LINK_DYNAMIC"] = False
+        for sconscript in sconscripts:
+            lib = str(sconscript.get_dir().up())
+            target_dir = "#/bin.SCons/" + lib + "/" + debug_release + "/" + linking
+            VariantDir(src_dir = lib + "/src", variant_dir = target_dir, duplicate = False)
+            VariantDir(src_dir = lib + "/build", variant_dir = lib + "/src", duplicate = False)
+            SConscript(target_dir + "/SConscript", exports = { "env" : env.Clone(BOOST_LIB = lib.upper()) })
Added: sandbox/SCons/tools/scons/boost-build-variants.py
==============================================================================
--- (empty file)
+++ sandbox/SCons/tools/scons/boost-build-variants.py	2009-02-03 17:09:08 EST (Tue, 03 Feb 2009)
@@ -0,0 +1,12 @@
+# vi: syntax=python:et:ts=4
+from SCons.Script import Split
+
+def exists():
+    return True
+
+def generate(env):
+    env["CXXFLAGS"] = Split("-ftemplate-depth-128 -Wall")
+    env["THREADING_MULTI_CCFLAGS"] = "-pthread"
+    env["THREADING_MULTI_LIBFLAGS"] = "-pthread"
+    env["DEBUG_CCFLAGS"] = Split("-O0 -g -fno-inline")
+    env["RELEASE_CCFLAGS"] = Split("-O3 -DNDEBUG -finline-functions -Wno-inline")
Modified: sandbox/SCons/tools/scons/boost-libs.py
==============================================================================
--- sandbox/SCons/tools/scons/boost-libs.py	(original)
+++ sandbox/SCons/tools/scons/boost-libs.py	2009-02-03 17:09:08 EST (Tue, 03 Feb 2009)
@@ -1,7 +1,10 @@
 # vi: syntax=python:et:ts=4
 
 def BoostLibrary(env, lib, sources):
-    env.StaticLibrary("boost_" + lib, sources)
+    if env["LINK_DYNAMIC"]:
+        env.SharedLibrary("boost_" + lib, sources)
+    else:
+        env.StaticLibrary("boost_" + lib, sources)
 
 def exists(env):
     return True