Initialize *FLAGS variables with objects that can add flags either as strings or...
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 26 Feb 2004 05:56:51 +0000 (05:56 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 26 Feb 2004 05:56:51 +0000 (05:56 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@908 fdb21ef1-2011-0410-befe-b5e4ea1792b1

66 files changed:
src/CHANGES.txt
src/engine/SCons/Tool/386asm.py
src/engine/SCons/Tool/BitKeeper.py
src/engine/SCons/Tool/CVS.py
src/engine/SCons/Tool/Perforce.py
src/engine/SCons/Tool/RCS.py
src/engine/SCons/Tool/SCCS.py
src/engine/SCons/Tool/Subversion.py
src/engine/SCons/Tool/ToolTests.py
src/engine/SCons/Tool/aixlink.py
src/engine/SCons/Tool/ar.py
src/engine/SCons/Tool/as.py
src/engine/SCons/Tool/bcc32.py
src/engine/SCons/Tool/c++.py
src/engine/SCons/Tool/cc.py
src/engine/SCons/Tool/dvipdf.py
src/engine/SCons/Tool/dvips.py
src/engine/SCons/Tool/f77.py
src/engine/SCons/Tool/g++.py
src/engine/SCons/Tool/gcc.py
src/engine/SCons/Tool/gnulink.py
src/engine/SCons/Tool/gs.py
src/engine/SCons/Tool/hpc++.py
src/engine/SCons/Tool/hplink.py
src/engine/SCons/Tool/icc.py
src/engine/SCons/Tool/ifl.py
src/engine/SCons/Tool/ilink.py
src/engine/SCons/Tool/ilink32.py
src/engine/SCons/Tool/jar.py
src/engine/SCons/Tool/javac.py
src/engine/SCons/Tool/javah.py
src/engine/SCons/Tool/latex.py
src/engine/SCons/Tool/lex.py
src/engine/SCons/Tool/link.py
src/engine/SCons/Tool/linkloc.py
src/engine/SCons/Tool/m4.py
src/engine/SCons/Tool/masm.py
src/engine/SCons/Tool/midl.py
src/engine/SCons/Tool/mingw.py
src/engine/SCons/Tool/mslib.py
src/engine/SCons/Tool/mslink.py
src/engine/SCons/Tool/msvc.py
src/engine/SCons/Tool/nasm.py
src/engine/SCons/Tool/pdflatex.py
src/engine/SCons/Tool/pdftex.py
src/engine/SCons/Tool/qt.py
src/engine/SCons/Tool/rmic.py
src/engine/SCons/Tool/sgiar.py
src/engine/SCons/Tool/sgic++.py
src/engine/SCons/Tool/sgilink.py
src/engine/SCons/Tool/sunar.py
src/engine/SCons/Tool/sunlink.py
src/engine/SCons/Tool/swig.py
src/engine/SCons/Tool/tar.py
src/engine/SCons/Tool/tex.py
src/engine/SCons/Tool/tlib.py
src/engine/SCons/Tool/yacc.py
src/engine/SCons/Tool/zip.py
src/engine/SCons/Util.py
src/engine/SCons/UtilTests.py
test/ARFLAGS.py
test/CVS.py
test/GSFLAGS.py
test/Options.py
test/RANLIBFLAGS.py
test/SHLINKFLAGS.py

index 9e7431427eadf01c9267d746002d65a7f1d44140..76f08b528af19ac89969f252d3e964ef9231d3eb 100644 (file)
@@ -189,6 +189,9 @@ RELEASE 0.95 - XXX
   - Supply a more descriptive error message when the source for a target
     can't be found.
 
+  - Initialize all *FLAGS variables with objects do the right thing with
+    appending flags as strings or lists.
+
   From Vincent Risi:
 
   - Add support for the bcc32, ilink32 and tlib Borland tools.
index 7a18a406ef61b41cf8f0b1128c6e2705a4552af6..bb8b7800afee1b06449bd964a3b251698548046d 100644 (file)
@@ -34,15 +34,17 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
-import as
 from SCons.Tool.PharLapCommon import addPharLapPaths
+import SCons.Util
+
+import as
 
 def generate(env):
     """Add Builders and construction variables for ar to an Environment."""
     as.generate(env)
 
     env['AS']        = '386asm'
-    env['ASFLAGS']   = ''
+    env['ASFLAGS']   = SCons.Util.CLVar('')
     env['ASCOM']     = '$AS $ASFLAGS $SOURCES -o $TARGET'
     env['ASPPCOM']   = '$CC $ASFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES -o $TARGET'
 
index 3208b6777be8b356919a45f0eb4ce713e6498b23..2983c1408ac7666e6bcef020fd1c3998587a020e 100644 (file)
@@ -37,6 +37,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os.path
 
 import SCons.Builder
+import SCons.Util
 
 def generate(env):
     """Add a Builder factory function and construction variables for
@@ -50,7 +51,7 @@ def generate(env):
 
     env['BITKEEPER']         = 'bk'
     env['BITKEEPERGET']      = '$BITKEEPER get'
-    env['BITKEEPERGETFLAGS'] = ''
+    env['BITKEEPERGETFLAGS'] = SCons.Util.CLVar('')
     env['BITKEEPERCOM']      = '$BITKEEPERGET $BITKEEPERGETFLAGS $TARGET'
 
 def exists(env):
index 6d5b046d239280015db4c074c3ff5c3fb950f339..20bbb6ab4f37b53d309519c56ea65cf7ed1c11c1 100644 (file)
@@ -36,6 +36,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os.path
 
 import SCons.Builder
+import SCons.Util
 
 def generate(env):
     """Add a Builder factory function and construction variables for
@@ -57,8 +58,8 @@ def generate(env):
     setattr(env, 'CVS', CVSFactory)
 
     env['CVS']        = 'cvs'
-    env['CVSFLAGS']   = '-d $CVSREPOSITORY'
-    env['CVSCOFLAGS'] = ''
+    env['CVSFLAGS']   = SCons.Util.CLVar('-d $CVSREPOSITORY')
+    env['CVSCOFLAGS'] = SCons.Util.CLVar('')
     env['CVSCOM']     = '$CVS $CVSFLAGS co $CVSCOFLAGS ${TARGET.posix}'
 
 def exists(env):
index 3526952dff9d75f65dd7ed54c376fe4f6b4629df..3813d993829f6a8498d9a341e1f11ad8d7f7fe50 100644 (file)
@@ -36,8 +36,8 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os
 
 import SCons.Builder
-import SCons.Util
 import SCons.Node.FS
+import SCons.Util
 
 # This function should maybe be moved to SCons.Util?
 from SCons.Tool.PharLapCommon import addPathIfNotExists
@@ -58,7 +58,7 @@ def generate(env):
     setattr(env, 'Perforce', PerforceFactory)
 
     env['P4']      = 'p4'
-    env['P4FLAGS'] = ''
+    env['P4FLAGS'] = SCons.Util.CLVar('')
     env['P4COM']   = '$P4 $P4FLAGS sync $TARGET'
     try:
         environ = env['ENV']
index 3b9547ce18f865952d555c555d40ebc12ea0a16e..a8f9168e90d834bb7f981526a6791016e39a9f2c 100644 (file)
@@ -34,6 +34,7 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Builder
+import SCons.Util
 
 def generate(env):
     """Add a Builder factory function and construction variables for
@@ -47,7 +48,7 @@ def generate(env):
 
     env['RCS']          = 'rcs'
     env['RCS_CO']       = 'co'
-    env['RCS_COFLAGS']  = ''
+    env['RCS_COFLAGS']  = SCons.Util.CLVar('')
     env['RCS_COCOM']    = '$RCS_CO $RCS_COFLAGS $TARGET'
 
 def exists(env):
index b75d67644f9031dca5c17778fb83866e574cc9e2..8230241ff529a79f509ea6ac1de42c6045fd523c 100644 (file)
@@ -34,6 +34,7 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Builder
+import SCons.Util
 
 def generate(env):
     """Add a Builder factory function and construction variables for
@@ -46,8 +47,8 @@ def generate(env):
     setattr(env, 'SCCS', SCCSFactory)
 
     env['SCCS']         = 'sccs'
-    env['SCCSFLAGS']    = ''
-    env['SCCSGETFLAGS'] = ''
+    env['SCCSFLAGS']    = SCons.Util.CLVar('')
+    env['SCCSGETFLAGS'] = SCons.Util.CLVar('')
     env['SCCSCOM']      = '$SCCS $SCCSFLAGS get $SCCSGETFLAGS $TARGET'
 
 def exists(env):
index 92839bc7608caa6751e99d1d667c1e2ffedb9308..85e032be43ae7bc65c406a4f4259c2519b56e7c0 100644 (file)
@@ -36,6 +36,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os.path
 
 import SCons.Builder
+import SCons.Util
 
 def generate(env):
     """Add a Builder factory function and construction variables for
@@ -54,7 +55,7 @@ def generate(env):
     setattr(env, 'Subversion', SubversionFactory)
 
     env['SVN']      = 'svn'
-    env['SVNFLAGS'] = ''
+    env['SVNFLAGS'] = SCons.Util.CLVar('')
     env['SVNCOM']   = '$SVN $SVNFLAGS cat $SVNREPOSITORY/$SVNMODULE$TARGET > $TARGET'
 
 def exists(env):
index cd809dfa3f7bc26fe4acd54edab48d05d716eb74..5ddac19396be1686d6588f343d26ec6dd01b23d7 100644 (file)
@@ -52,7 +52,7 @@ class ToolTestCase(unittest.TestCase):
         t = SCons.Tool.Tool('g++')
         t(env)
         assert (env['CXX'] == 'c++' or env['CXX'] == 'g++'), env['CXX']
-        assert env['CXXFLAGS'] == '$CCFLAGS', env['CXXFLAGS']
+        assert env['CXXFLAGS'] == ['$CCFLAGS'], env['CXXFLAGS']
         assert env['INCPREFIX'] == '-I', env['INCPREFIX']
         assert env['TOOLS'] == ['g++'], env['TOOLS']
 
index d98701609512e0f71e35ac60dbb2fc4a4f0a930f..2deb1f1940dff44116371887360eff67ba9df3f8 100644 (file)
@@ -35,6 +35,8 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os
 import os.path
 
+import SCons.Util
+
 import aixcc
 import link
 
@@ -55,8 +57,8 @@ def generate(env):
     link.generate(env)
 
     env['SMARTLINKFLAGS'] = smart_linkflags
-    env['LINKFLAGS']      = '$SMARTLINKFLAGS'
-    env['SHLINKFLAGS']    = '$LINKFLAGS -qmkshrobj -qsuppress=1501-218'
+    env['LINKFLAGS']      = SCons.Util.CLVar('$SMARTLINKFLAGS')
+    env['SHLINKFLAGS']    = SCons.Util.CLVar('$LINKFLAGS -qmkshrobj -qsuppress=1501-218')
     env['SHLIBSUFFIX']    = '.a'
 
 def exists(env):
index 653836fdcbe632ba46baf677ebe9dfe20e007f02..0522adc60fd11b864a4b77d7c3ae1f279892094b 100644 (file)
@@ -35,6 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Defaults
 import SCons.Tool
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for ar to an Environment."""
@@ -46,9 +47,9 @@ def generate(env):
         arcom = arcom + '\n$RANLIB $RANLIBFLAGS $TARGET'
 
     env['AR']          = 'ar'
-    env['ARFLAGS']     = 'r'
+    env['ARFLAGS']     = SCons.Util.CLVar('r')
     env['RANLIB']      = ranlib
-    env['RANLIBFLAGS'] = ''
+    env['RANLIBFLAGS'] = SCons.Util.CLVar('')
     env['ARCOM']       = arcom
 
 def exists(env):
index 14a2d43d42256e68575e0e4b58783c0438b5d19c..3d630e3cf1526ca9434c8939a1e3d5d27707044e 100644 (file)
@@ -59,7 +59,7 @@ def generate(env):
         static_obj.add_action(suffix, SCons.Defaults.ASPPAction)
 
     env['AS']        = env.Detect(assemblers) or 'as'
-    env['ASFLAGS']   = ''
+    env['ASFLAGS']   = SCons.Util.CLVar('')
     env['ASCOM']     = '$AS $ASFLAGS -o $TARGET $SOURCES'
     env['ASPPCOM']   = '$CC $ASFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
 
index 6f635250671046614fc5820d32f2faab51aeae70..6d3acca2181035594db47c4d25be1c29a8a51d37 100644 (file)
@@ -59,10 +59,10 @@ def generate(env):
         static_obj.add_action(suffix, SCons.Defaults.CAction)
         shared_obj.add_action(suffix, SCons.Defaults.ShCAction)
     env['CC']        = 'bcc32'
-    env['CCFLAGS']   = ''
+    env['CCFLAGS']   = SCons.Util.CLVar('')
     env['CCCOM']     = '$CC -q $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
     env['SHCC']      = '$CC'
-    env['SHCCFLAGS'] = '$CCFLAGS'
+    env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
     env['SHCCCOM']   = '$SHCC -WD $SHCCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
     env['CPPDEFPREFIX']  = '-D'
     env['CPPDEFSUFFIX']  = ''
index 2ed7d44f27c634c3380b790a8447ef2ff1f32788..8e0adfae55093d52bbd752af5d9c04ca79c8205b 100644 (file)
@@ -67,10 +67,10 @@ def generate(env):
         shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction)
         
     env['CXX']        = 'c++'
-    env['CXXFLAGS']   = '$CCFLAGS'
+    env['CXXFLAGS']   = SCons.Util.CLVar('$CCFLAGS')
     env['CXXCOM']     = '$CXX $CXXFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
     env['SHCXX']      = '$CXX'
-    env['SHCXXFLAGS'] = '$CXXFLAGS'
+    env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
     env['SHCXXCOM']   = '$SHCXX $SHCXXFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
 
     env['CPPDEFPREFIX']  = '-D'
index 18b62d2b7c1900b9afab4a03c536cae30a500868..f096065c0f52dd4b71f1f385d927276f8e451b6e 100644 (file)
@@ -53,10 +53,10 @@ def generate(env):
         shared_obj.add_action(suffix, SCons.Defaults.ShCAction)
         
     env['CC']        = 'cc'
-    env['CCFLAGS']   = ''
+    env['CCFLAGS']   = SCons.Util.CLVar('')
     env['CCCOM']     = '$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
     env['SHCC']      = '$CC'
-    env['SHCCFLAGS'] = '$CCFLAGS'
+    env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
     env['SHCCCOM']   = '$SHCC $SHCCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
 
     env['CPPDEFPREFIX']  = '-D'
index b4da3c733effc3ebc4d9fb12c5c203942da192a0..8c51ac0922ef7a4fc6af3cd2d87b7018f569a7cc 100644 (file)
@@ -34,6 +34,7 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Defaults
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for dvipdf to an Environment."""
@@ -45,11 +46,11 @@ def generate(env):
     bld.add_action('.dvi', '$PDFCOM')
 
     env['DVIPDF']      = 'dvipdf'
-    env['DVIPDFFLAGS'] = ''
+    env['DVIPDFFLAGS'] = SCons.Util.CLVar('')
     env['DVIPDFCOM']   = '$DVIPDF $DVIPDFFLAGS $SOURCES $TARGET'
 
     # Deprecated synonym.
-    env['PDFCOM']      = '$DVIPDFCOM'
+    env['PDFCOM']      = ['$DVIPDFCOM']
 
 def exists(env):
     return env.Detect('dvipdf')
index f197b9b285bdb704877167300dc2c604ba87007b..d70d78d65123f73bef018e7284691e4697e7b3b6 100644 (file)
@@ -35,6 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Action
 import SCons.Defaults
+import SCons.Util
 
 PostScript = SCons.Builder.Builder(action = '$PSCOM',
                                    prefix = '$PSPREFIX',
@@ -47,7 +48,7 @@ def generate(env):
     env['BUILDERS']['PostScript'] = PostScript
     
     env['DVIPS']      = 'dvips'
-    env['DVIPSFLAGS'] = ''
+    env['DVIPSFLAGS'] = SCons.Util.CLVar('')
     env['PSCOM']      = '$DVIPS $DVIPSFLAGS -o $TARGET $SOURCES'
 
 def exists(env):
index 42670962fc582d34d267f3dd542ce3b8bb7bc0d8..83941f159d7fabb4c6bef6b7ca91011fff68044f 100644 (file)
@@ -61,11 +61,11 @@ def generate(env):
         shared_obj.add_action(suffix, SCons.Defaults.ShF77PPAction)
 
     env['F77']        = env.Detect(compilers) or 'f77'
-    env['F77FLAGS']   = ''
+    env['F77FLAGS']   = SCons.Util.CLVar('')
     env['F77COM']     = '$F77 $F77FLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES'
     env['F77PPCOM']   = '$F77 $F77FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES'
     env['SHF77']      = '$F77'
-    env['SHF77FLAGS'] = '$F77FLAGS'
+    env['SHF77FLAGS'] = SCons.Util.CLVar('$F77FLAGS')
     env['SHF77COM']   = '$SHF77 $SHF77FLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES'
     env['SHF77PPCOM'] = '$SHF77 $SHF77FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES'
 
index d641a6c9c7173c19c03fd38e972d70d8c1b6fa1b..0576b90f2c0f748ab913641ec692b9983d068129 100644 (file)
@@ -34,7 +34,6 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import os.path
-import string
 import re
 
 import SCons.Defaults
@@ -55,27 +54,27 @@ def generate(env):
 
     # platform specific settings
     if env['PLATFORM'] == 'cygwin':
-        env['SHCXXFLAGS'] = '$CXXFLAGS'
+        env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
     elif env['PLATFORM'] == 'aix':
         # Original line from Christian Engel added -DPIC:
-        #env['SHCXXFLAGS'] = '$CXXFLAGS -DPIC -mminimal-toc'
-        env['SHCXXFLAGS'] = '$CXXFLAGS -mminimal-toc'
+        #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -DPIC -mminimal-toc')
+        env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -mminimal-toc')
         env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
         env['SHOBJSUFFIX'] = '$OBJSUFFIX'
     elif env['PLATFORM'] == 'hpux':
         # Original line from Christian Engel added -DPIC:
-        #env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC -DPIC'
-        env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC'
+        #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC -DPIC')
+        env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC')
         env['SHOBJSUFFIX'] = '.pic.o'
     elif env['PLATFORM'] == 'sunos':
         # Original line from Christian Engel added -DPIC:
-        #env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC -DPIC'
-        env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC'
+        #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC -DPIC')
+        env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC')
         env['SHOBJSUFFIX'] = '.pic.o'
     else:
         # Original line from Christian Engel added -DPIC:
-        #env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC -DPIC'
-        env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC'
+        #env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC -DPIC')
+        env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -fPIC')
     # determine compiler version
     if env['CXX']:
         line = os.popen(env['CXX'] + ' --version').readline()
index acbe4406a8ccbb719070d517e02294867f184924..761082e80fe385f52478961e7e448631ea5619a2 100644 (file)
@@ -33,6 +33,8 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
+import SCons.Util
+
 import cc
 
 compilers = ['gcc', 'cc']
@@ -43,9 +45,9 @@ def generate(env):
 
     env['CC'] = env.Detect(compilers) or 'gcc'
     if env['PLATFORM'] == 'cygwin':
-        env['SHCCFLAGS'] = '$CCFLAGS'
+        env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
     else:
-        env['SHCCFLAGS'] = ['$CCFLAGS', '-fPIC']
+        env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS -fPIC')
 
 def exists(env):
     return env.Detect(compilers)
index 3c3bba12bb5933596be4d556c5f5657f5b2b4551..0e7530473b82ae3bd3001af98e727c7e54f295cf 100644 (file)
@@ -33,6 +33,8 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
+import SCons.Util
+
 import link
 
 linkers = ['g++', 'gcc']
@@ -42,7 +44,7 @@ def generate(env):
     link.generate(env)
 
     if env['PLATFORM'] == 'hpux':
-        env['SHLINKFLAGS'] = '$LINKFLAGS -shared -fPIC'
+        env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared -fPIC')
     
 def exists(env):
     return env.Detect(linkers)
index 79d50e4e0bae1df26b19868ea9ae386644c9c690..26661895a0f9a2d3a5b44bcf3d2708e77e569db8 100644 (file)
@@ -35,6 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Defaults
 import SCons.Platform
+import SCons.Util
 
 # Ghostscript goes by different names on different platforms...
 platform = SCons.Platform.platform_default()
@@ -58,7 +59,7 @@ def generate(env):
     bld.add_action('.ps', '$GSCOM')
 
     env['GS']      = gs
-    env['GSFLAGS'] = '-dNOPAUSE -dBATCH -sDEVICE=pdfwrite'
+    env['GSFLAGS'] = SCons.Util.CLVar('-dNOPAUSE -dBATCH -sDEVICE=pdfwrite')
     env['GSCOM']   = '$GS $GSFLAGS -sOutputFile=$TARGET $SOURCES'
 
 
index 4ed1ba09eb8d1329e1d6f9370b036900b0611c6d..a1b3e97482a35b7659cf780fa4a179fa1c8c2633 100644 (file)
@@ -36,6 +36,8 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os.path
 import string
 
+import SCons.Util
+
 cplusplus = __import__('c++', globals(), locals(), [])
 
 acc = None
@@ -66,9 +68,9 @@ def generate(env):
             env['CXXVERSION'] = string.split(line)[-1]
 
         if env['PLATFORM'] == 'cygwin':
-            env['SHCXXFLAGS'] = '$CXXFLAGS'
+            env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
         else:
-            env['SHCXXFLAGS'] = '$CXXFLAGS +Z'
+            env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS +Z')
 
 def exists(env):
     return acc
index 2c7b55c08d8b6f6ce8d051983e8a17e958e6606b..f3d03c924ef9ce7a5fcec149313918944053c229 100644 (file)
@@ -35,6 +35,8 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os
 import os.path
 
+import SCons.Util
+
 import link
 
 ccLinker = None
@@ -59,8 +61,8 @@ def generate(env):
     """
     link.generate(env)
     
-    env['LINKFLAGS']   = '-Wl,+s -Wl,+vnocompatwarnings'
-    env['SHLINKFLAGS'] = '$LINKFLAGS -b'
+    env['LINKFLAGS']   = SCons.Util.CLVar('-Wl,+s -Wl,+vnocompatwarnings')
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -b')
     env['SHLIBSUFFIX'] = '.sl'
 
 def exists(env):
index 20bf17ced9440831e4d7cb8d9f12bdb2dbcce6c9..4a553a08dffeecd7a9b792bf3f4aa89a6342a6b3 100644 (file)
@@ -33,6 +33,8 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
+import SCons.Util
+
 import cc
 
 def generate(env):
index 1b0cd33dd0353a10ce219c7624d70d7bc318451a..04c9d39d68b2ca31fccd32810705186c38a3bcec 100644 (file)
@@ -33,6 +33,8 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
+import SCons.Util
+
 import f77
 
 def generate(env):
@@ -40,11 +42,11 @@ def generate(env):
     f77.generate(env)
 
     env['F77']        = 'ifl'
-    env['F77FLAGS']   = ''
+    env['F77FLAGS']   = SCons.Util.CLVar('')
     env['F77COM']     = '$F77 $F77FLAGS $_F77INCFLAGS /c $SOURCES /Fo$TARGET'
     env['F77PPCOM']   = '$F77 $F77FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F77INCFLAGS /c $SOURCES /Fo$TARGET'
     env['SHF77']      = '$F77'
-    env['SHF77FLAGS'] = '$F77FLAGS'
+    env['SHF77FLAGS'] = SCons.Util.CLVar('$F77FLAGS')
     env['SHF77COM']   = '$SHF77 $SHF77FLAGS $_F77INCFLAGS /c $SOURCES /Fo$TARGET'
     env['SHF77PPCOM'] = '$SHF77 $SHF77FLAGS $CPPFLAGS $_CPPDEFFLAGS $_F77INCFLAGS /c $SOURCES /Fo$TARGET'
 
index 739dd176944d3a7360b6395baa7485e01119a5f0..180e57a09db92692e8a22ead7adb42b3e77cdeb2 100644 (file)
@@ -35,13 +35,14 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Defaults
 import SCons.Tool
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for ilink to an Environment."""
     SCons.Tool.createProgBuilder(env)
     
     env['LINK']        = 'ilink'
-    env['LINKFLAGS']   = ''
+    env['LINKFLAGS']   = SCons.Util.CLVar('')
     env['LINKCOM']     = '$LINK $LINKFLAGS /O:$TARGET $SOURCES $( $_LIBDIRFLAGS $) $_LIBFLAGS'
     env['LIBDIRPREFIX']='/LIBPATH:'
     env['LIBDIRSUFFIX']=''
index 35d1a667b7dc59da0c99e773660170eec10014e3..a667b75747cac49bc8dba9dfe214a785fb0185b7 100644 (file)
@@ -31,6 +31,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Tool
 import SCons.Tool.bcc32
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for ilink to an
@@ -38,7 +39,7 @@ def generate(env):
     SCons.Tool.createProgBuilder(env)
 
     env['LINK']        = '$CC'
-    env['LINKFLAGS']   = ''
+    env['LINKFLAGS']   = SCons.Util.CLVar('')
     env['LINKCOM']     = '$LINK -q $LINKFLAGS $SOURCES $LIBS'
     env['LIBDIRPREFIX']=''
     env['LIBDIRSUFFIX']=''
index 5fcb205c5d642382557c301f4bf2bf50f87cccf7..7934ed21e662c538fd7a3d7a01f7104c5957720a 100644 (file)
@@ -37,6 +37,7 @@ import glob
 import os.path
 
 import SCons.Builder
+import SCons.Util
 
 def jarSources(target, source, env, for_signature):
     """Only include sources that are not a manifest file."""
@@ -63,13 +64,14 @@ def jarManifest(target, source, env, for_signature):
 def jarFlags(target, source, env, for_signature):
     """If we have a manifest, make sure that the 'm'
     flag is specified."""
+    jarflags = env.subst('$JARFLAGS')
     for src in source:
         contents = src.get_contents()
         if contents[:16] == "Manifest-Version":
-            if not 'm' in env['JARFLAGS']:
-                return env['JARFLAGS'] + 'm'
+            if not 'm' in jarflags:
+                return jarflags + 'm'
             break
-    return env['JARFLAGS']
+    return jarflags
 
 def jarChdir(target, source, env, for_signature):
     """If we have an Environment variable by the name
@@ -91,7 +93,7 @@ def generate(env):
         env['BUILDERS']['Jar'] = JarBuilder
 
     env['JAR']        = 'jar'
-    env['JARFLAGS']   = 'cf'
+    env['JARFLAGS']   = SCons.Util.CLVar('cf')
     env['_JARFLAGS']  = jarFlags
     env['_JARMANIFEST'] = jarManifest
     env['_JARSOURCES'] = jarSources
index 3d4df107fb7ee7f4b338e6434dfa1f290fa7d67e..b56a11893d0d1d315286687d047291dbc332611b 100644 (file)
@@ -41,6 +41,7 @@ import string
 import SCons.Builder
 from SCons.Node.FS import _my_normcase
 from SCons.Tool.JavaCommon import parse_java_file
+import SCons.Util
 
 def classname(path):
     """Turn a string (path name) into a Java class name."""
@@ -100,7 +101,7 @@ def generate(env):
     env['BUILDERS']['Java'] = JavaBuilder
 
     env['JAVAC']            = 'javac'
-    env['JAVACFLAGS']       = ''
+    env['JAVACFLAGS']       = SCons.Util.CLVar('')
     env['JAVACCOM']         = '$JAVAC $JAVACFLAGS -d ${TARGET.attributes.java_classdir} -sourcepath ${SOURCE.dir.rdir()} $SOURCES'
     env['JAVACLASSSUFFIX']  = '.class'
     env['JAVASUFFIX']       = '.java'
index fe8c82d588b894b8f4e4c2a4153498498be5f073..c35f909eda38791738af8828ff6114ed3390a6ec 100644 (file)
@@ -40,6 +40,7 @@ import string
 import SCons.Builder
 import SCons.Node.FS
 import SCons.Tool.javac
+import SCons.Util
 
 def emit_java_headers(target, source, env):
     """Create and return lists of Java stub header files that will
@@ -118,7 +119,7 @@ def generate(env):
 
     env['_JAVAHOUTFLAG']    = JavaHOutFlagGenerator
     env['JAVAH']            = 'javah'
-    env['JAVAHFLAGS']       = ''
+    env['JAVAHFLAGS']       = SCons.Util.CLVar('')
     env['JAVAHCOM']         = '$JAVAH $JAVAHFLAGS $_JAVAHOUTFLAG -classpath ${SOURCE.attributes.java_classdir} ${SOURCES.attributes.java_classname}'
     env['JAVACLASSSUFFIX']  = '.class'
 
index d9b912c584b1d9d0c2d354efd8f7dc29c94ae56e..7bbec6f541967485e8a08b00d703f7b5dbcbe00d 100644 (file)
@@ -35,6 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Action
 import SCons.Defaults
+import SCons.Util
 
 LaTeXAction = SCons.Action.Action('$LATEXCOM')
 
@@ -51,7 +52,7 @@ def generate(env):
     bld.add_action('.latex', LaTeXAction)
 
     env['LATEX']      = 'latex'
-    env['LATEXFLAGS'] = ''
+    env['LATEXFLAGS'] = SCons.Util.CLVar('')
     env['LATEXCOM']   = '$LATEX $LATEXFLAGS $SOURCES'
 
 def exists(env):
index 9ef21673fa55a689f2d0967e35bc9eafc93ca178..004d0da2d0167a8d4775f8be15db5be8aa7c8134 100644 (file)
@@ -35,6 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Defaults
 import SCons.Tool
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for lex to an Environment."""
@@ -44,7 +45,7 @@ def generate(env):
     cxx_file.add_action('.ll', '$LEXCOM')
 
     env['LEX']      = env.Detect('flex') or 'lex'
-    env['LEXFLAGS'] = ''
+    env['LEXFLAGS'] = SCons.Util.CLVar('')
     env['LEXCOM']   = '$LEX $LEXFLAGS -t $SOURCES > $TARGET'
     
 def exists(env):
index da672c1b0ee7d12c89250d1625c3c2547af3217f..cc0d4f4a3ff0f838aa3c95092c17621128bbcb97 100644 (file)
@@ -50,12 +50,12 @@ def generate(env):
     SCons.Tool.createProgBuilder(env)
     
     env['SHLINK']      = '$LINK'
-    env['SHLINKFLAGS'] = '$LINKFLAGS -shared'
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
     env['SHLINKCOM']   = '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
     env['SHLIBEMITTER']= None
     env['SMARTLINK']   = smart_link
     env['LINK']        = "$SMARTLINK"
-    env['LINKFLAGS']   = ''
+    env['LINKFLAGS']   = SCons.Util.CLVar('')
     env['LINKCOM']     = '$LINK $LINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
     env['LIBDIRPREFIX']='-L'
     env['LIBDIRSUFFIX']=''
index 313a16bf29527c1f6265aa6415bfb93acf24c145..a5b2bdda9b59d745e60a2b91ed37871676368820 100644 (file)
@@ -35,7 +35,6 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import os.path
-import string
 import re
 
 import SCons.Action
@@ -84,11 +83,11 @@ def generate(env):
 
     env['SUBST_CMD_FILE'] = LinklocGenerator
     env['SHLINK']      = '$LINK'
-    env['SHLINKFLAGS'] = '$LINKFLAGS'
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS')
     env['SHLINKCOM']   = '${SUBST_CMD_FILE("$SHLINK $SHLINKFLAGS $( $_LIBDIRFLAGS $) $_LIBFLAGS -dll $TARGET $SOURCES")}'
     env['SHLIBEMITTER']= None
     env['LINK']        = "linkloc"
-    env['LINKFLAGS']   = ''
+    env['LINKFLAGS']   = SCons.Util.CLVar('')
     env['LINKCOM']     = '${SUBST_CMD_FILE("$LINK $LINKFLAGS $( $_LIBDIRFLAGS $) $_LIBFLAGS -exe $TARGET $SOURCES")}'
     env['LIBDIRPREFIX']='-libpath '
     env['LIBDIRSUFFIX']=''
index 0c83c66bb22cf77e17e2cfee87373d874b09583b..3fd2d66662d35f5f97fb353d020f170260629052 100644 (file)
@@ -34,6 +34,7 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Builder
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for m4 to an Environment."""
@@ -47,7 +48,7 @@ def generate(env):
     # The src_suffix setup is like so: file.c.m4 -> file.c,
     # file.cpp.m4 -> file.cpp etc.
     env['M4']      = 'm4'
-    env['M4FLAGS'] = '-E'
+    env['M4FLAGS'] = SCons.Util.CLVar('-E')
     env['M4COM']   = 'cd ${SOURCE.rsrcdir} && $M4 $M4FLAGS < ${SOURCE.file} > ${TARGET.abspath}'
 
 def exists(env):
index 92f4c35a7c7b959632f06540be93be7c48e95403..1bb9f95253757a23fb34fc4bf3beab64fb76a4b6 100644 (file)
@@ -37,6 +37,7 @@ import os.path
 
 import SCons.Defaults
 import SCons.Tool
+import SCons.Util
 
 ASSuffixes = ['.s', '.asm', '.ASM']
 ASPPSuffixes = ['.spp', '.SPP']
@@ -58,7 +59,7 @@ def generate(env):
         shared_obj.add_action(suffix, SCons.Defaults.ASPPAction)
 
     env['AS']        = 'ml'
-    env['ASFLAGS']   = '/nologo'
+    env['ASFLAGS']   = SCons.Util.CLVar('/nologo')
     env['ASCOM']     = '$AS $ASFLAGS /c /Fo$TARGET $SOURCES'
     env['ASPPCOM']   = '$CC $ASFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c /Fo$TARGET $SOURCES'
     env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
index fe424fcd0b333ed8d87f7b8ad19128b04336d8e4..2efabccb8fe99fbdca80d2ccfff324c6af7956a8 100644 (file)
@@ -64,8 +64,8 @@ def generate(env):
     """Add Builders and construction variables for midl to an Environment."""
 
     env['MIDL']          = 'MIDL.EXE'
-    env['MIDLFLAGS']     = '/nologo'
-    env['MIDLCOM']       = "$MIDL $MIDLFLAGS /tlb ${TARGETS[0]} /h ${TARGETS[1]} /iid ${TARGETS[2]} /proxy ${TARGETS[3]} /dlldata ${TARGETS[4]} $SOURCE 2> NUL"
+    env['MIDLFLAGS']     = SCons.Util.CLVar('/nologo')
+    env['MIDLCOM']       = '$MIDL $MIDLFLAGS /tlb ${TARGETS[0]} /h ${TARGETS[1]} /iid ${TARGETS[2]} /proxy ${TARGETS[3]} /dlldata ${TARGETS[4]} $SOURCE 2> NUL'
     env['BUILDERS']['TypeLibrary'] = midl_builder
 
 def exists(env):
index bc3693dc4cea294041a951e36ec63e429c7a6a32..ac4d969b604d4d6f8a153ca911fdce78fddcb00e 100644 (file)
@@ -33,11 +33,12 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
-import os.path
 import os
+import os.path
+import string
+
 import SCons.Tool
 import SCons.Util
-import string
 
 # This is what we search for to find mingw:
 key_program = 'mingw32-gcc'
@@ -47,7 +48,7 @@ def find(env):
     return env.WhereIs(key_program) or SCons.Util.WhereIs(key_program)
 
 def shlib_generator(target, source, env, for_signature):
-    cmd = ['$SHLINK', '$SHLINKFLAGS'] 
+    cmd = SCons.Util.CLVar('$SHLINK', '$SHLINKFLAGS') 
 
     dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
     if dll: cmd.extend(['-o', dll])
@@ -117,10 +118,10 @@ def generate(env):
 
     #... but a few things differ:
     env['CC'] = 'gcc'
-    env['SHCCFLAGS'] = '$CCFLAGS'
+    env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
     env['CXX'] = 'g++'
-    env['SHCXXFLAGS'] = '$CXXFLAGS'
-    env['SHLINKFLAGS'] = '$LINKFLAGS -shared'
+    env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
     env['SHLINKCOM']   = shlib_action
     env['SHLIBEMITTER']= shlib_emitter
     env['LINK'] = 'g++'
@@ -131,8 +132,8 @@ def generate(env):
     env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
 
     env['RC'] = 'windres'
-    env['RCFLAGS'] = ''
-    env['RCINCFLAGS'] = '$( ${_concat(RCINCPREFIX, CPPPATH, RCINCSUFFIX, __env__, RDirs)} $)'
+    env['RCFLAGS'] = SCons.Util.CLVar('')
+    env['RCINCFLAGS'] = SCons.Util.CLVar('$( ${_concat(RCINCPREFIX, CPPPATH, RCINCSUFFIX, __env__, RDirs)} $)')
     env['RCINCPREFIX'] = '--include-dir '
     env['RCINCSUFFIX'] = ''
     env['RCCOM'] = '$RC $RCINCFLAGS $RCFLAGS -i $SOURCE -o $TARGET'
index 646cbdecd78b01fa3efd67a858c2ff42675ec695..1075c56d93f913a50b76c0cc9a00a1c485456c6b 100644 (file)
@@ -37,6 +37,7 @@ import SCons.Defaults
 import SCons.Tool
 import SCons.Tool.msvs
 import SCons.Tool.msvc
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for lib to an Environment."""
@@ -57,7 +58,7 @@ def generate(env):
         pass
 
     env['AR']          = 'lib'
-    env['ARFLAGS']     = '/nologo'
+    env['ARFLAGS']     = SCons.Util.CLVar('/nologo')
     env['ARCOM']       = "${TEMPFILE('$AR $ARFLAGS /OUT:$TARGET $SOURCES')}"
 
 def exists(env):
index 282fb22d6f64a9e3dd9b4e50533f281b9f1d7140..fd53757a6de3db116d17ee847902db6c5ef24ed8 100644 (file)
@@ -34,16 +34,15 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import os.path
-import string
 
 import SCons.Action
 import SCons.Defaults
 import SCons.Errors
-import SCons.Util
+import SCons.Platform.win32
 import SCons.Tool
-import SCons.Tool.msvs
 import SCons.Tool.msvc
-import SCons.Platform.win32
+import SCons.Tool.msvs
+import SCons.Util
 
 def pdbGenerator(env, target, source, for_signature):
     if target and env.has_key('PDB') and env['PDB']:
@@ -137,13 +136,13 @@ def generate(env):
     SCons.Tool.createProgBuilder(env)
     
     env['SHLINK']      = '$LINK'
-    env['SHLINKFLAGS'] = '$LINKFLAGS /dll'
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS /dll')
     env['_SHLINK_TARGETS'] = win32ShlinkTargets
     env['_SHLINK_SOURCES'] = win32ShlinkSources
     env['SHLINKCOM']   =  compositeLinkAction
     env['SHLIBEMITTER']= win32LibEmitter
     env['LINK']        = 'link'
-    env['LINKFLAGS']   = '/nologo'
+    env['LINKFLAGS']   = SCons.Util.CLVar('/nologo')
     env['_PDB'] = pdbGenerator
     env['LINKCOM'] = '${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET $( $_LIBDIRFLAGS $) $_LIBFLAGS $_PDB $SOURCES")}'
     env['PROGEMITTER'] = prog_emitter
index 40f8b40725e99c57b8da7a39434112cb68a40c83..e2c0b65a26d302668e6e0f8dcc9b58c52f7ded84 100644 (file)
@@ -34,18 +34,18 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import os.path
+import re
 import string
 import types
-import re
 
 import SCons.Action
-import SCons.Tool
-import SCons.Errors
-import SCons.Warnings
 import SCons.Builder
-import SCons.Util
+import SCons.Errors
 import SCons.Platform.win32
+import SCons.Tool
 import SCons.Tool.msvs
+import SCons.Util
+import SCons.Warnings
 
 CSuffixes = ['.c', '.C']
 CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++']
@@ -395,20 +395,20 @@ def generate(env):
         static_obj.add_action(suffix, SCons.Defaults.CXXAction)
         shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction)
 
-    env['CCPDBFLAGS'] = '${(PDB and "/Zi /Fd%s"%File(PDB)) or ""}'
-    env['CCPCHFLAGS'] = '${(PCH and "/Yu%s /Fp%s"%(PCHSTOP or "",File(PCH))) or ""}'
+    env['CCPDBFLAGS'] = SCons.Util.CLVar(['${(PDB and "/Zi /Fd%s"%File(PDB)) or ""}'])
+    env['CCPCHFLAGS'] = SCons.Util.CLVar(['${(PCH and "/Yu%s /Fp%s"%(PCHSTOP or "",File(PCH))) or ""}'])
     env['CCCOMFLAGS'] = '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET $CCPCHFLAGS $CCPDBFLAGS'
     env['CC']         = 'cl'
-    env['CCFLAGS']    = '/nologo'
-    env['CCCOM']      = '$CC $CCFLAGS $CCCOMFLAGS' 
+    env['CCFLAGS']    = SCons.Util.CLVar('/nologo')
+    env['CCCOM']      = '$CC $CCFLAGS $CCCOMFLAGS'
     env['SHCC']       = '$CC'
-    env['SHCCFLAGS']  = '$CCFLAGS'
+    env['SHCCFLAGS']  = SCons.Util.CLVar('$CCFLAGS')
     env['SHCCCOM']    = '$SHCC $SHCCFLAGS $CCCOMFLAGS'
     env['CXX']        = '$CC'
-    env['CXXFLAGS']   = ['$CCFLAGS', '$(', '/TP', '$)']
+    env['CXXFLAGS']   = SCons.Util.CLVar('$CCFLAGS $( /TP $)')
     env['CXXCOM']     = '$CXX $CXXFLAGS $CCCOMFLAGS'
     env['SHCXX']      = '$CXX'
-    env['SHCXXFLAGS'] = '$CXXFLAGS'
+    env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
     env['SHCXXCOM']   = '$SHCXX $SHCXXFLAGS $CCCOMFLAGS'
     env['CPPDEFPREFIX']  = '/D'
     env['CPPDEFSUFFIX']  = ''
@@ -419,7 +419,7 @@ def generate(env):
     env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
 
     env['RC'] = 'rc'
-    env['RCFLAGS'] = ''
+    env['RCFLAGS'] = SCons.Util.CLVar('')
     env['RCCOM'] = '$RC $_CPPDEFFLAGS $_CPPINCFLAGS $RCFLAGS /fo$TARGET $SOURCES'
     CScan = env.get_scanner('.c')
     if CScan:
index 6a2fc365e9d3bff0411813824299c31884b6930b..84075ba5b5b6089b9e49a3251029acc35594667e 100644 (file)
@@ -37,6 +37,7 @@ import os.path
 
 import SCons.Defaults
 import SCons.Tool
+import SCons.Util
 
 ASSuffixes = ['.s', '.asm', '.ASM']
 ASPPSuffixes = ['.spp', '.SPP']
@@ -56,7 +57,7 @@ def generate(env):
         static_obj.add_action(suffix, SCons.Defaults.ASPPAction)
 
     env['AS']        = 'nasm'
-    env['ASFLAGS']   = ''
+    env['ASFLAGS']   = SCons.Util.CLVar('')
     env['ASCOM']     = '$AS $ASFLAGS -o $TARGET $SOURCES'
     env['ASPPCOM']   = '$CC $ASFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
 
index 1ae606e5a07e7eb79ad006fc028743b19329d6a5..b1a559a93f6780fa16404761f8e5006be1744840 100644 (file)
@@ -35,6 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Action
 import SCons.Defaults
+import SCons.Util
 
 PDFLaTeXAction = SCons.Action.Action('$PDFLATEXCOM')
 
@@ -50,7 +51,7 @@ def generate(env):
     bld.add_action('.latex', PDFLaTeXAction)
 
     env['PDFLATEX']      = 'pdflatex'
-    env['PDFLATEXFLAGS'] = ''
+    env['PDFLATEXFLAGS'] = SCons.Util.CLVar('')
     env['PDFLATEXCOM']   = '$PDFLATEX $PDFLATEXFLAGS $SOURCES $TARGET'
 
 def exists(env):
index 14b3d954b3ad617f5ea9d4e68e47a55fe85d669f..3d2add0dda4e933c201719029efe8fd9ad6eaa9d 100644 (file)
@@ -34,6 +34,7 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Defaults
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for pdftex to an Environment."""
@@ -46,7 +47,7 @@ def generate(env):
     bld.add_action('.tex', '$PDFTEXCOM')
 
     env['PDFTEX']      = 'pdftex'
-    env['PDFTEXFLAGS'] = ''
+    env['PDFTEXFLAGS'] = SCons.Util.CLVar('')
     env['PDFTEXCOM']   = '$PDFTEX $PDFTEXFLAGS $SOURCES $TARGET'
 
 def exists(env):
index 9969e024d72c4d232acbd7078e52097788964a47..693f77ec8e26fc98fb2ca2aab0db6ca8796eb719 100644 (file)
@@ -34,9 +34,9 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
-import sys
 import os.path
 import re
+import sys
 
 import SCons.Defaults
 import SCons.Tool
@@ -154,10 +154,10 @@ def generate(env):
 
     # Some QT specific flags. I don't expect someone wants to
     # manipulate those ...
-    env['QT_UICIMPLFLAGS'] = ''
-    env['QT_UICDECLFLAGS'] = ''
-    env['QT_MOCFROMHFLAGS'] = ''
-    env['QT_MOCFROMCXXFLAGS'] = '-i'
+    env['QT_UICIMPLFLAGS'] = SCons.Util.CLVar('')
+    env['QT_UICDECLFLAGS'] = SCons.Util.CLVar('')
+    env['QT_MOCFROMHFLAGS'] = SCons.Util.CLVar('')
+    env['QT_MOCFROMCXXFLAGS'] = SCons.Util.CLVar('-i')
 
     # Suffixes for the headers / sources to generate
     env['QT_HSUFFIX'] = '.h'
index 79cc316abed4dcbe35ca597ffbfb0da039126f81..565dc9ed3895bc2e0661883a5f1daa0d8bfb2eb0 100644 (file)
@@ -39,6 +39,7 @@ import string
 
 import SCons.Builder
 import SCons.Node.FS
+import SCons.Util
 
 def emit_rmic_classes(target, source, env):
     """Create and return lists of Java RMI stub and skeleton
@@ -101,7 +102,7 @@ def generate(env):
     env['BUILDERS']['RMIC'] = RMICBuilder
 
     env['RMIC']            = 'rmic'
-    env['RMICFLAGS']       = ''
+    env['RMICFLAGS']       = SCons.Util.CLVar('')
     env['RMICCOM']         = '$RMIC $RMICFLAGS -d ${TARGET.attributes.java_lookupdir} -classpath ${SOURCE.attributes.java_classdir} ${SOURCES.attributes.java_classname}'
     env['JAVACLASSSUFFIX']  = '.class'
 
index 079ec8c8a2ce3322bd966adabebc66bcb5e2b2f5..1409d03a2a5694e957b8741978aa48dca9e42ca1 100644 (file)
@@ -37,6 +37,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Defaults
 import SCons.Tool
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for ar to an Environment."""
@@ -44,15 +45,15 @@ def generate(env):
     
     if env.Detect('CC'):
         env['AR']          = 'CC'
-        env['ARFLAGS']     = '-ar'
+        env['ARFLAGS']     = SCons.Util.CLVar('-ar')
         env['ARCOM']       = '$AR $ARFLAGS -o $TARGET $SOURCES'
     else:
         env['AR']          = 'ar'
-        env['ARFLAGS']     = 'r'
+        env['ARFLAGS']     = SCons.Util.CLVar('r')
         env['ARCOM']       = '$AR $ARFLAGS $TARGET $SOURCES'
         
     env['SHLINK']      = '$LINK'
-    env['SHLINKFLAGS'] = '$LINKFLAGS -shared'
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
     env['SHLINKCOM']   = '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
 
 def exists(env):
index a8c918659e105676d971639102edd3bdbdedeeec..9081044d9262fadbceeb9f03cc0c87e7be18d60f 100644 (file)
@@ -7,10 +7,35 @@ It will usually be imported through the generic SCons.Tool.Tool()
 selection method.
 
 """
-__revision__ = ""
+
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import os.path
-import string
+
+import SCons.Util
 
 cplusplus = __import__('c++', globals(), locals(), [])
 
@@ -20,7 +45,7 @@ def generate(env):
     cplusplus.generate(env)
 
     env['CXX']         = 'CC'
-    env['CXXFLAGS']    = ['$CCFLAGS', '-LANG:std']
+    env['CXXFLAGS']    = SCons.Util.CLVar('$CCFLAGS -LANG:std')
     env['SHCXX']       = 'CC'
     env['SHOBJSUFFIX'] = '.o'
     env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
index 5643c088f14417b8d53dac2464e6013fca0f6c2a..80cfcf448a2beac316c719f039267346e5e4c1bc 100644 (file)
@@ -33,6 +33,8 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
+import SCons.Util
+
 import link
 
 linkers = ['CC', 'cc']
@@ -42,7 +44,7 @@ def generate(env):
     link.generate(env)
     
     env['LINK'] = env.Detect(linkers) or 'cc'
-    env['SHLINKFLAGS'] = '$LINKFLAGS -shared'
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
 
 def exists(env):
     return env.Detect(linkers)
index 5d44b6060a64e045786bbdee0cdad17c921338a8..36a69842bdeb13495a8024a79ee43327fd79946e 100644 (file)
@@ -36,6 +36,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Defaults
 import SCons.Tool
+import SCons.Util
 
 def generate(env):
     """Add Builders and construction variables for ar to an Environment."""
@@ -43,15 +44,15 @@ def generate(env):
     
     if env.Detect('CC'):
         env['AR']          = 'CC'
-        env['ARFLAGS']     = '-xar'
+        env['ARFLAGS']     = SCons.Util.CLVar('-xar')
         env['ARCOM']       = '$AR $ARFLAGS -o $TARGET $SOURCES'
     else:
         env['AR']          = 'ar'
-        env['ARFLAGS']     = 'r'
+        env['ARFLAGS']     = SCons.Util.CLVar('r')
         env['ARCOM']       = '$AR $ARFLAGS $TARGET $SOURCES'
 
     env['SHLINK']      = '$LINK'
-    env['SHLINKFLAGS'] = '$LINKFLAGS -G'
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -G')
     env['SHLINKCOM']   = '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
 
 def exists(env):
index 53dd410a19b4662919dd6c55b56a5302a2376a23..88624ca43c4cf117b9622cac3700ca732c82f164 100644 (file)
@@ -35,6 +35,8 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os
 import os.path
 
+import SCons.Util
+
 import link
 
 ccLinker = None
@@ -56,7 +58,7 @@ def generate(env):
     """Add Builders and construction variables for Forte to an Environment."""
     link.generate(env)
     
-    env['SHLINKFLAGS'] = '$LINKFLAGS -G'
+    env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -G')
 
 def exists(env):
     return ccLinker
index 9dcfad4e5ddbb541ce3dd26be2bda2c5b6fe8a67..b58fadc3492f32f2f64df3da61d37caece7e498f 100644 (file)
@@ -34,13 +34,13 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import os.path
-import string
 
 import SCons.Defaults
 import SCons.Tool
+import SCons.Util
 
 def swigSuffixEmitter(env, source):
-    if '-c++' in string.split(env.subst("$SWIGFLAGS")):
+    if '-c++' in SCons.Util.CLVar(env.subst("$SWIGFLAGS")):
         return '$SWIGCXXFILESUFFIX'
     else:
         return '$SWIGCFILESUFFIX'
@@ -56,7 +56,7 @@ def generate(env):
     cxx_file.add_action('.i', '$SWIGCOM')
 
     env['SWIG']              = 'swig'
-    env['SWIGFLAGS']         = ''
+    env['SWIGFLAGS']         = SCons.Util.CLVar('')
     env['SWIGCFILESUFFIX']   = '_wrap$CFILESUFFIX'
     env['SWIGCXXFILESUFFIX'] = '_wrap$CXXFILESUFFIX'
     env['SWIGCOM']           = '$SWIG $SWIGFLAGS -o $TARGET $SOURCES'
index 011f48b0a1b7928d052b42b5cca2a63c413773a0..83fb7d3aeb17e5523b807f6ac658ced41a551846 100644 (file)
@@ -54,7 +54,7 @@ def generate(env):
         env['BUILDERS']['Tar'] = bld
 
     env['TAR']        = env.Detect(tars) or 'gtar'
-    env['TARFLAGS']   = '-c'
+    env['TARFLAGS']   = SCons.Util.CLVar('-c')
     env['TARCOM']     = '$TAR $TARFLAGS -f $TARGET $SOURCES'
     env['TARSUFFIX']  = '.tar'
 
index c06efbf83684b9f1c21df7cc54781f5667d06a76..b9257ea3a96dca17b8d9b46fd7aab597e6b2691a 100644 (file)
@@ -101,16 +101,16 @@ def generate(env):
     bld.add_action('.tex', TeXLaTeXAction)
 
     env['TEX']      = 'tex'
-    env['TEXFLAGS'] = ''
+    env['TEXFLAGS'] = SCons.Util.CLVar('')
     env['TEXCOM']   = '$TEX $TEXFLAGS $SOURCES'
 
     # Duplicate from latex.py.  If latex.py goes away, then this is still OK.
     env['LATEX']      = 'latex'
-    env['LATEXFLAGS'] = ''
+    env['LATEXFLAGS'] = SCons.Util.CLVar('')
     env['LATEXCOM']   = '$LATEX $LATEXFLAGS $SOURCES'
 
     env['BIBTEX']      = 'bibtex'
-    env['BIBTEXFLAGS'] = ''
+    env['BIBTEXFLAGS'] = SCons.Util.CLVar('')
     env['BIBTEXCOM']   = '$BIBTEX $BIBTEXFLAGS $SOURCES'
 
 
index 6ce1bf4decf46edf234fc1a0e33a8514707d2e18..4a70c14bc7a2018301ff25c7edb475781c109507 100644 (file)
@@ -31,13 +31,14 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import SCons.Tool
 import SCons.Tool.bcc32
+import SCons.Util
 
 def generate(env):
     SCons.Tool.bcc32.findIt('tlib', env)
     """Add Builders and construction variables for ar to an Environment."""
     SCons.Tool.createStaticLibBuilder(env)
     env['AR']          = 'tlib'
-    env['ARFLAGS']     = ''
+    env['ARFLAGS']     = SCons.Util.CLVar('')
     env['ARCOM']       = '$AR $TARGET $ARFLAGS /a $SOURCES'
 
 def exists(env):
index c0274ce1dc73dd73ba2875c4900c2031681809fc..cf54b78c2a13bde8e28ba36e4288c759a1acb193 100644 (file)
@@ -34,7 +34,6 @@ selection method.
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import os.path
-import string
 
 import SCons.Tool
 import SCons.Util
@@ -43,7 +42,7 @@ def _yaccEmitter(target, source, env, ysuf, hsuf):
     # If -d is specified on the command line, yacc will emit a .h
     # or .hpp file as well as a .c or .cpp file, depending on whether
     # the input file is a .y or .yy, respectively.
-    if len(source) and '-d' in string.split(env.subst("$YACCFLAGS")):
+    if len(source) and '-d' in SCons.Util.CLVar(env.subst("$YACCFLAGS")):
         base, ext = os.path.splitext(SCons.Util.to_String(source[0]))
         if ext == ysuf:
             base, ext = os.path.splitext(SCons.Util.to_String(target[0]))
@@ -66,7 +65,7 @@ def generate(env):
     cxx_file.add_emitter('.yy', yyEmitter)
 
     env['YACC']      = env.Detect('bison') or 'yacc'
-    env['YACCFLAGS'] = ''
+    env['YACCFLAGS'] = SCons.Util.CLVar('')
     env['YACCCOM']   = '$YACC $YACCFLAGS -o $TARGET $SOURCES'
 
 def exists(env):
index 18f0caa56f6b6f81f2d38baca9cc7cfc344b832c..c81a4f3e22bafc54fe048999af970cc2ba6fe7d5 100644 (file)
@@ -83,7 +83,7 @@ def generate(env):
         env['BUILDERS']['Zip'] = bld
 
     env['ZIP']        = 'zip'
-    env['ZIPFLAGS']   = ''
+    env['ZIPFLAGS']   = SCons.Util.CLVar('')
     env['ZIPCOM']     = zipAction
     env['ZIPCOMPRESSION'] =  zipcompression
     env['ZIPSUFFIX']  = '.zip'
index 4ca25b2ab02f8368f6757daeb06d406cfec7591a..2fb4e93b500c851c0238abb513173acfa0c3b1a4 100644 (file)
@@ -1202,6 +1202,33 @@ else:
 
 display = DisplayEngine()
 
+def Split(arg):
+    if is_List(arg):
+        return arg
+    elif is_String(arg):
+        return string.split(arg)
+    else:
+        return [arg]
+
+class CLVar(UserList.UserList):
+    """A class for command-line construction variables.
+
+    This is a list that uses Split() to split an initial string along
+    white-space arguments, and similarly to split any strings that get
+    added.  This allows us to Do the Right Thing with Append() and
+    Prepend() (as well as straight Python foo = env['VAR'] + 'arg1
+    arg2') regardless of whether a user adds a list or a string to a
+    command-line construction variable.
+    """
+    def __init__(self, seq = []):
+        UserList.UserList.__init__(self, Split(seq))
+    def __coerce__(self, other):
+        if is_String(other):
+            other = Split(other)
+        return (self, other)
+    def __str__(self):
+        return string.join(self.data)
+
 class Selector(UserDict.UserDict):
     """A callable dictionary that maps file suffixes to dictionary
     values."""
index d981abc4ef2025a388e3c65bc3b63297d5220a73..85911196a8a75db85a38c53e98b4edf1d2009431 100644 (file)
@@ -1305,6 +1305,123 @@ class UtilTestCase(unittest.TestCase):
         assert nl[0:2].child.bar == [ 't1child', 't2child' ], \
                nl[0:2].child.bar
 
+    def test_CLVar(self):
+        """Test the command-line construction variable class"""
+        f = SCons.Util.CLVar('a b')
+
+        r = f + 'c d'
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + ' c d'
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + ['c d']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', 'c d'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + [' c d']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', ' c d'], r.data
+        assert str(r) == 'a b  c d', str(r)
+
+        r = f + ['c', 'd']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + [' c', 'd']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', ' c', 'd'], r.data
+        assert str(r) == 'a b  c d', str(r)
+
+        f = SCons.Util.CLVar(['a b'])
+
+        r = f + 'c d'
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + ' c d'
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + ['c d']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a b', 'c d'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + [' c d']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a b', ' c d'], r.data
+        assert str(r) == 'a b  c d', str(r)
+
+        r = f + ['c', 'd']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + [' c', 'd']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a b', ' c', 'd'], r.data
+        assert str(r) == 'a b  c d', str(r)
+
+        f = SCons.Util.CLVar(['a', 'b'])
+
+        r = f + 'c d'
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + ' c d'
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + ['c d']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', 'c d'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + [' c d']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', ' c d'], r.data
+        assert str(r) == 'a b  c d', str(r)
+
+        r = f + ['c', 'd']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', 'c', 'd'], r.data
+        assert str(r) == 'a b c d', str(r)
+
+        r = f + [' c', 'd']
+        assert isinstance(r, SCons.Util.CLVar), type(r)
+        assert r.data == ['a', 'b', ' c', 'd'], r.data
+        assert str(r) == 'a b  c d', str(r)
+
+        loc = {}
+        loc['FOO'] = 'foo'
+        loc['BAR'] = SCons.Util.CLVar('bar')
+        loc['CALL'] = lambda target, source, env, for_signature: 'call'
+        env = DummyEnv(loc)
+
+        cmd = SCons.Util.CLVar("test $FOO $BAR $CALL test")
+
+        newcmd = scons_subst(cmd, env)
+        assert newcmd == 'test foo bar call test', newcmd
+
+        cmd_list = scons_subst_list(cmd, env)
+        assert len(cmd_list) == 1, cmd_list
+        assert cmd_list[0][0] == "test", cmd_list[0][0]
+        assert cmd_list[0][1] == "foo", cmd_list[0][1]
+        assert cmd_list[0][2] == "bar", cmd_list[0][2]
+        assert cmd_list[0][3] == "call", cmd_list[0][3]
+        assert cmd_list[0][4] == "test", cmd_list[0][4]
+
     def test_Selector(self):
         """Test the Selector class"""
 
index 54cb463cb833b0346edb964b74be18245d7431fa..a9dc5728c858d45f5bd5ffa0343f3e237564f8af 100644 (file)
@@ -44,10 +44,8 @@ os.system(string.join(sys.argv[1:], " "))
 
 test.write('SConstruct', """
 foo = Environment(LIBS = ['foo'], LIBPATH = ['.'])
-ar = foo.Dictionary('AR')
-arflags = foo.Dictionary('ARFLAGS')
 bar = Environment(LIBS = ['bar'], LIBPATH = ['.'],
-                  AR = '', ARFLAGS = r'%s wrapper.py ' + ar + ' ' + arflags)
+                  AR = '', ARFLAGS = foo.subst(r'%s wrapper.py $AR $ARFLAGS'))
 foo.Library(target = 'foo', source = 'foo.c')
 bar.Library(target = 'bar', source = 'bar.c')
 
index 85e11fea8972aad3b5e44ac5f48fa245fbcfac05..2eed3d2fbe836bfba356e5b8910bbf368e9c9cc8 100644 (file)
@@ -105,7 +105,7 @@ def cat(env, source, target):
     f.close()
 env = Environment(ENV = { 'PATH' : os.environ['PATH'] },
                   BUILDERS={'Cat':Builder(action=cat)})
-env.Prepend(CVSFLAGS='-Q ')
+env.Prepend(CVSFLAGS='-Q')
 env.Cat('aaa.out', 'foo/aaa.in')
 env.Cat('bbb.out', 'foo/bbb.in')
 env.Cat('ccc.out', 'foo/ccc.in')
@@ -175,7 +175,7 @@ def cat(env, source, target):
     f.close()
 env = Environment(ENV = { 'PATH' : os.environ['PATH'] },
                   BUILDERS={'Cat':Builder(action=cat)})
-env.Prepend(CVSFLAGS='-q ')
+env.Prepend(CVSFLAGS='-q')
 env.Cat('aaa.out', 'aaa.in')
 env.Cat('bbb.out', 'bbb.in')
 env.Cat('ccc.out', 'ccc.in')
index 114d5c939fb462550b17732a14f17ac8c936fc8a..14ce76914536e69e16a6b266d1bd4c4c22e2b2bb 100644 (file)
@@ -95,7 +95,7 @@ os.system(cmd)
 import os
 ENV = { 'PATH' : os.environ['PATH'] }
 foo = Environment(ENV = ENV)
-foo.Append(GSFLAGS = ' -q')
+foo.Append(GSFLAGS = '-q')
 foo.PDF(target = 'foo.pdf', source = 'foo.ps')
 """)
 
index 0e21aa93cff656b72a82117f361049a02d765e0a..c98ffc6199d04581465377d6d13b56c7678a5731 100644 (file)
@@ -30,15 +30,18 @@ import string
 test = TestSCons.TestSCons()
 
 test.write('SConstruct', """
+import string
 env = Environment()
 print env['CC']
-print env['CCFLAGS']
+print string.join(env['CCFLAGS'])
 Default(env.Alias('dummy', None))
 """)
 test.run()
 cc, ccflags = string.split(test.stdout(), '\n')[1:3]
 
 test.write('SConstruct', """
+import string
+
 # test validator.  Change a key and add a new one to the environment
 def validator(key, value, environ):
     environ[key] = "v"
@@ -71,9 +74,9 @@ opts.Add('UNSPECIFIED',
 
 def test_tool(env):
     if env['RELEASE_BUILD']:
-        env['CCFLAGS'] = env['CCFLAGS'] + ' -O'
+        env.Append(CCFLAGS = '-O')
     if env['DEBUG_BUILD']:
-        env['CCFLAGS'] = env['CCFLAGS'] + ' -g'
+        env.Append(CCFLAGS = '-g')
 
 
 env = Environment(options=opts, tools=['default', test_tool])
@@ -83,7 +86,7 @@ Help('Variables settable in custom.py or on the command line:\\n' + opts.Generat
 print env['RELEASE_BUILD']
 print env['DEBUG_BUILD']
 print env['CC']
-print env['CCFLAGS']
+print string.join(env['CCFLAGS'])
 print env['VALIDATE']
 print env['valid_key']
 
@@ -109,22 +112,22 @@ def check(expect):
     assert result[1:len(expect)+1] == expect, (result[1:len(expect)+1], expect)
 
 test.run()
-check(['0', '1', cc, ccflags + ' -g', 'v', 'v'])
+check(['0', '1', cc, string.strip(ccflags + ' -g'), 'v', 'v'])
 
 test.run(arguments='"RELEASE_BUILD=1"')
-check(['1', '1', cc, ccflags + ' -O -g', 'v', 'v'])
+check(['1', '1', cc, string.strip(ccflags + ' -O -g'), 'v', 'v'])
 
 test.run(arguments='"RELEASE_BUILD=1" "DEBUG_BUILD=0"')
-check(['1', '0', cc, ccflags + ' -O', 'v', 'v'])
+check(['1', '0', cc, string.strip(ccflags + ' -O'), 'v', 'v'])
 
 test.run(arguments='"CC=not_a_c_compiler"')
-check(['0', '1', 'not_a_c_compiler', ccflags + ' -g', 'v', 'v'])
+check(['0', '1', 'not_a_c_compiler', string.strip(ccflags + ' -g'), 'v', 'v'])
 
 test.run(arguments='"UNDECLARED=foo"')
-check(['0', '1', cc, ccflags + ' -g', 'v', 'v'])
+check(['0', '1', cc, string.strip(ccflags + ' -g'), 'v', 'v'])
 
 test.run(arguments='"CCFLAGS=--taco"')
-check(['0', '1', cc, ccflags + ' -g', 'v', 'v'])
+check(['0', '1', cc, string.strip(ccflags + ' -g'), 'v', 'v'])
 
 test.write('custom.py', """
 DEBUG_BUILD=0
@@ -132,10 +135,10 @@ RELEASE_BUILD=1
 """)
 
 test.run()
-check(['1', '0', cc, ccflags + ' -O', 'v', 'v'])
+check(['1', '0', cc, string.strip(ccflags + ' -O'), 'v', 'v'])
 
 test.run(arguments='"DEBUG_BUILD=1"')
-check(['1', '1', cc, ccflags + ' -O -g', 'v', 'v'])
+check(['1', '1', cc, string.strip(ccflags + ' -O -g'), 'v', 'v'])
 
 test.run(arguments='-h',
          stdout = """scons: Reading SConscript files ...
index fec606dd9798f674ae0d875d115c7834ec2ae86e..07da92e4a260358446e63044d8ebefb962449f73 100644 (file)
@@ -48,10 +48,8 @@ os.system(string.join(sys.argv[1:], " "))
 
 test.write('SConstruct', """
 foo = Environment(LIBS = ['foo'], LIBPATH = ['.'])
-ranlib = foo.Dictionary('RANLIB')
-ranlibflags = foo.Dictionary('RANLIBFLAGS')
 bar = Environment(LIBS = ['bar'], LIBPATH = ['.'], RANLIB = '',
-                  RANLIBFLAGS = r'%s wrapper.py ' + ranlib + ' ' + ranlibflags)
+                  RANLIBFLAGS = foo.subst(r'%s wrapper.py $RANLIB $RANLIBFLAGS'))
 foo.Library(target = 'foo', source = 'foo.c')
 bar.Library(target = 'bar', source = 'bar.c')
 
index b7f18ca9bf0ad67d14cbd1d150a550e98948ac61..88e2442d7b418298b332587c86032ae7b85ea1c1 100644 (file)
@@ -45,10 +45,8 @@ os.system(string.join(sys.argv[1:], " "))
 
 test.write('SConstruct', """
 foo = Environment()
-shlink = foo.Dictionary('SHLINK')
-shlinkflags = foo.Dictionary('SHLINKFLAGS')
 bar = Environment(SHLINK = '',
-                  SHLINKFLAGS = r'%s wrapper.py ' + shlink + ' ' + shlinkflags)
+                  SHLINKFLAGS = foo.subst(r'%s wrapper.py $SHLINK $SHLINKFLAGS'))
 foo.SharedLibrary(target = 'foo', source = 'foo.c')
 bar.SharedLibrary(target = 'bar', source = 'bar.c')
 """ % python)