libv8 3.3.10.2 → 3.3.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +35 -7
  3. data/Rakefile +61 -20
  4. data/ext/libv8/extconf.rb +15 -0
  5. data/lib/libv8/scons/CHANGES.txt +231 -24
  6. data/lib/libv8/scons/LICENSE.txt +1 -1
  7. data/lib/libv8/scons/MANIFEST +1 -0
  8. data/lib/libv8/scons/PKG-INFO +1 -1
  9. data/lib/libv8/scons/README.txt +9 -9
  10. data/lib/libv8/scons/RELEASE.txt +77 -75
  11. data/lib/libv8/scons/engine/SCons/Action.py +22 -6
  12. data/lib/libv8/scons/engine/SCons/Builder.py +2 -2
  13. data/lib/libv8/scons/engine/SCons/CacheDir.py +2 -2
  14. data/lib/libv8/scons/engine/SCons/Debug.py +2 -2
  15. data/lib/libv8/scons/engine/SCons/Defaults.py +24 -10
  16. data/lib/libv8/scons/engine/SCons/Environment.py +118 -19
  17. data/lib/libv8/scons/engine/SCons/Errors.py +2 -2
  18. data/lib/libv8/scons/engine/SCons/Executor.py +2 -2
  19. data/lib/libv8/scons/engine/SCons/Job.py +2 -2
  20. data/lib/libv8/scons/engine/SCons/Memoize.py +2 -2
  21. data/lib/libv8/scons/engine/SCons/Node/Alias.py +2 -2
  22. data/lib/libv8/scons/engine/SCons/Node/FS.py +281 -121
  23. data/lib/libv8/scons/engine/SCons/Node/Python.py +2 -2
  24. data/lib/libv8/scons/engine/SCons/Node/__init__.py +6 -5
  25. data/lib/libv8/scons/engine/SCons/Options/BoolOption.py +2 -2
  26. data/lib/libv8/scons/engine/SCons/Options/EnumOption.py +2 -2
  27. data/lib/libv8/scons/engine/SCons/Options/ListOption.py +2 -2
  28. data/lib/libv8/scons/engine/SCons/Options/PackageOption.py +2 -2
  29. data/lib/libv8/scons/engine/SCons/Options/PathOption.py +2 -2
  30. data/lib/libv8/scons/engine/SCons/Options/__init__.py +2 -2
  31. data/lib/libv8/scons/engine/SCons/PathList.py +2 -2
  32. data/lib/libv8/scons/engine/SCons/Platform/__init__.py +2 -2
  33. data/lib/libv8/scons/engine/SCons/Platform/aix.py +2 -2
  34. data/lib/libv8/scons/engine/SCons/Platform/cygwin.py +2 -2
  35. data/lib/libv8/scons/engine/SCons/Platform/darwin.py +27 -3
  36. data/lib/libv8/scons/engine/SCons/Platform/hpux.py +2 -2
  37. data/lib/libv8/scons/engine/SCons/Platform/irix.py +2 -2
  38. data/lib/libv8/scons/engine/SCons/Platform/os2.py +2 -2
  39. data/lib/libv8/scons/engine/SCons/Platform/posix.py +2 -2
  40. data/lib/libv8/scons/engine/SCons/Platform/sunos.py +2 -2
  41. data/lib/libv8/scons/engine/SCons/Platform/win32.py +2 -2
  42. data/lib/libv8/scons/engine/SCons/SConf.py +2 -2
  43. data/lib/libv8/scons/engine/SCons/SConsign.py +9 -3
  44. data/lib/libv8/scons/engine/SCons/Scanner/C.py +2 -2
  45. data/lib/libv8/scons/engine/SCons/Scanner/D.py +2 -2
  46. data/lib/libv8/scons/engine/SCons/Scanner/Dir.py +2 -2
  47. data/lib/libv8/scons/engine/SCons/Scanner/Fortran.py +2 -2
  48. data/lib/libv8/scons/engine/SCons/Scanner/IDL.py +2 -2
  49. data/lib/libv8/scons/engine/SCons/Scanner/LaTeX.py +5 -2
  50. data/lib/libv8/scons/engine/SCons/Scanner/Prog.py +2 -2
  51. data/lib/libv8/scons/engine/SCons/Scanner/RC.py +3 -3
  52. data/lib/libv8/scons/engine/SCons/Scanner/__init__.py +2 -2
  53. data/lib/libv8/scons/engine/SCons/Script/Interactive.py +2 -2
  54. data/lib/libv8/scons/engine/SCons/Script/Main.py +82 -11
  55. data/lib/libv8/scons/engine/SCons/Script/SConsOptions.py +5 -5
  56. data/lib/libv8/scons/engine/SCons/Script/SConscript.py +2 -2
  57. data/lib/libv8/scons/engine/SCons/Script/__init__.py +2 -2
  58. data/lib/libv8/scons/engine/SCons/Sig.py +2 -2
  59. data/lib/libv8/scons/engine/SCons/Subst.py +2 -2
  60. data/lib/libv8/scons/engine/SCons/Taskmaster.py +10 -2
  61. data/lib/libv8/scons/engine/SCons/Tool/386asm.py +2 -2
  62. data/lib/libv8/scons/engine/SCons/Tool/BitKeeper.py +2 -2
  63. data/lib/libv8/scons/engine/SCons/Tool/CVS.py +2 -2
  64. data/lib/libv8/scons/engine/SCons/Tool/FortranCommon.py +19 -2
  65. data/lib/libv8/scons/engine/SCons/Tool/JavaCommon.py +2 -2
  66. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/__init__.py +2 -2
  67. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/arch.py +2 -2
  68. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/common.py +2 -2
  69. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/netframework.py +2 -2
  70. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/sdk.py +2 -2
  71. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vc.py +9 -6
  72. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vs.py +29 -2
  73. data/lib/libv8/scons/engine/SCons/Tool/Perforce.py +2 -2
  74. data/lib/libv8/scons/engine/SCons/Tool/PharLapCommon.py +2 -2
  75. data/lib/libv8/scons/engine/SCons/Tool/RCS.py +2 -2
  76. data/lib/libv8/scons/engine/SCons/Tool/SCCS.py +2 -2
  77. data/lib/libv8/scons/engine/SCons/Tool/Subversion.py +2 -2
  78. data/lib/libv8/scons/engine/SCons/Tool/__init__.py +3 -3
  79. data/lib/libv8/scons/engine/SCons/Tool/aixc++.py +2 -2
  80. data/lib/libv8/scons/engine/SCons/Tool/aixcc.py +2 -2
  81. data/lib/libv8/scons/engine/SCons/Tool/aixf77.py +2 -2
  82. data/lib/libv8/scons/engine/SCons/Tool/aixlink.py +2 -2
  83. data/lib/libv8/scons/engine/SCons/Tool/applelink.py +2 -2
  84. data/lib/libv8/scons/engine/SCons/Tool/ar.py +2 -2
  85. data/lib/libv8/scons/engine/SCons/Tool/as.py +2 -2
  86. data/lib/libv8/scons/engine/SCons/Tool/bcc32.py +2 -2
  87. data/lib/libv8/scons/engine/SCons/Tool/c++.py +2 -2
  88. data/lib/libv8/scons/engine/SCons/Tool/cc.py +2 -2
  89. data/lib/libv8/scons/engine/SCons/Tool/cvf.py +2 -2
  90. data/lib/libv8/scons/engine/SCons/Tool/default.py +2 -2
  91. data/lib/libv8/scons/engine/SCons/Tool/dmd.py +24 -7
  92. data/lib/libv8/scons/engine/SCons/Tool/dvi.py +2 -2
  93. data/lib/libv8/scons/engine/SCons/Tool/dvipdf.py +3 -2
  94. data/lib/libv8/scons/engine/SCons/Tool/dvips.py +3 -2
  95. data/lib/libv8/scons/engine/SCons/Tool/f03.py +63 -0
  96. data/lib/libv8/scons/engine/SCons/Tool/f77.py +2 -2
  97. data/lib/libv8/scons/engine/SCons/Tool/f90.py +2 -2
  98. data/lib/libv8/scons/engine/SCons/Tool/f95.py +2 -2
  99. data/lib/libv8/scons/engine/SCons/Tool/filesystem.py +2 -2
  100. data/lib/libv8/scons/engine/SCons/Tool/fortran.py +2 -2
  101. data/lib/libv8/scons/engine/SCons/Tool/g++.py +2 -2
  102. data/lib/libv8/scons/engine/SCons/Tool/g77.py +2 -2
  103. data/lib/libv8/scons/engine/SCons/Tool/gas.py +2 -2
  104. data/lib/libv8/scons/engine/SCons/Tool/gcc.py +2 -2
  105. data/lib/libv8/scons/engine/SCons/Tool/gfortran.py +3 -3
  106. data/lib/libv8/scons/engine/SCons/Tool/gnulink.py +2 -3
  107. data/lib/libv8/scons/engine/SCons/Tool/gs.py +2 -2
  108. data/lib/libv8/scons/engine/SCons/Tool/hpc++.py +2 -2
  109. data/lib/libv8/scons/engine/SCons/Tool/hpcc.py +2 -2
  110. data/lib/libv8/scons/engine/SCons/Tool/hplink.py +2 -2
  111. data/lib/libv8/scons/engine/SCons/Tool/icc.py +2 -2
  112. data/lib/libv8/scons/engine/SCons/Tool/icl.py +2 -2
  113. data/lib/libv8/scons/engine/SCons/Tool/ifl.py +2 -2
  114. data/lib/libv8/scons/engine/SCons/Tool/ifort.py +2 -2
  115. data/lib/libv8/scons/engine/SCons/Tool/ilink.py +2 -2
  116. data/lib/libv8/scons/engine/SCons/Tool/ilink32.py +2 -2
  117. data/lib/libv8/scons/engine/SCons/Tool/install.py +57 -3
  118. data/lib/libv8/scons/engine/SCons/Tool/intelc.py +65 -25
  119. data/lib/libv8/scons/engine/SCons/Tool/ipkg.py +2 -2
  120. data/lib/libv8/scons/engine/SCons/Tool/jar.py +9 -3
  121. data/lib/libv8/scons/engine/SCons/Tool/javac.py +2 -2
  122. data/lib/libv8/scons/engine/SCons/Tool/javah.py +2 -2
  123. data/lib/libv8/scons/engine/SCons/Tool/latex.py +3 -2
  124. data/lib/libv8/scons/engine/SCons/Tool/lex.py +2 -2
  125. data/lib/libv8/scons/engine/SCons/Tool/link.py +6 -5
  126. data/lib/libv8/scons/engine/SCons/Tool/linkloc.py +2 -2
  127. data/lib/libv8/scons/engine/SCons/Tool/m4.py +2 -2
  128. data/lib/libv8/scons/engine/SCons/Tool/masm.py +2 -2
  129. data/lib/libv8/scons/engine/SCons/Tool/midl.py +2 -2
  130. data/lib/libv8/scons/engine/SCons/Tool/mingw.py +31 -10
  131. data/lib/libv8/scons/engine/SCons/Tool/mslib.py +2 -2
  132. data/lib/libv8/scons/engine/SCons/Tool/mslink.py +61 -9
  133. data/lib/libv8/scons/engine/SCons/Tool/mssdk.py +2 -2
  134. data/lib/libv8/scons/engine/SCons/Tool/msvc.py +21 -11
  135. data/lib/libv8/scons/engine/SCons/Tool/msvs.py +477 -59
  136. data/lib/libv8/scons/engine/SCons/Tool/mwcc.py +2 -2
  137. data/lib/libv8/scons/engine/SCons/Tool/mwld.py +2 -2
  138. data/lib/libv8/scons/engine/SCons/Tool/nasm.py +2 -2
  139. data/lib/libv8/scons/engine/SCons/Tool/packaging/__init__.py +2 -2
  140. data/lib/libv8/scons/engine/SCons/Tool/packaging/ipk.py +2 -2
  141. data/lib/libv8/scons/engine/SCons/Tool/packaging/msi.py +2 -2
  142. data/lib/libv8/scons/engine/SCons/Tool/packaging/rpm.py +2 -2
  143. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_tarbz2.py +2 -2
  144. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_targz.py +2 -2
  145. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_zip.py +2 -2
  146. data/lib/libv8/scons/engine/SCons/Tool/packaging/tarbz2.py +2 -2
  147. data/lib/libv8/scons/engine/SCons/Tool/packaging/targz.py +2 -2
  148. data/lib/libv8/scons/engine/SCons/Tool/packaging/zip.py +2 -2
  149. data/lib/libv8/scons/engine/SCons/Tool/pdf.py +2 -2
  150. data/lib/libv8/scons/engine/SCons/Tool/pdflatex.py +3 -2
  151. data/lib/libv8/scons/engine/SCons/Tool/pdftex.py +3 -2
  152. data/lib/libv8/scons/engine/SCons/Tool/qt.py +2 -2
  153. data/lib/libv8/scons/engine/SCons/Tool/rmic.py +9 -3
  154. data/lib/libv8/scons/engine/SCons/Tool/rpcgen.py +2 -2
  155. data/lib/libv8/scons/engine/SCons/Tool/rpm.py +2 -2
  156. data/lib/libv8/scons/engine/SCons/Tool/sgiar.py +2 -2
  157. data/lib/libv8/scons/engine/SCons/Tool/sgic++.py +2 -2
  158. data/lib/libv8/scons/engine/SCons/Tool/sgicc.py +2 -2
  159. data/lib/libv8/scons/engine/SCons/Tool/sgilink.py +2 -3
  160. data/lib/libv8/scons/engine/SCons/Tool/sunar.py +2 -2
  161. data/lib/libv8/scons/engine/SCons/Tool/sunc++.py +2 -2
  162. data/lib/libv8/scons/engine/SCons/Tool/suncc.py +2 -2
  163. data/lib/libv8/scons/engine/SCons/Tool/sunf77.py +2 -2
  164. data/lib/libv8/scons/engine/SCons/Tool/sunf90.py +2 -2
  165. data/lib/libv8/scons/engine/SCons/Tool/sunf95.py +2 -2
  166. data/lib/libv8/scons/engine/SCons/Tool/sunlink.py +2 -3
  167. data/lib/libv8/scons/engine/SCons/Tool/swig.py +6 -5
  168. data/lib/libv8/scons/engine/SCons/Tool/tar.py +2 -2
  169. data/lib/libv8/scons/engine/SCons/Tool/tex.py +96 -43
  170. data/lib/libv8/scons/engine/SCons/Tool/textfile.py +2 -2
  171. data/lib/libv8/scons/engine/SCons/Tool/tlib.py +2 -2
  172. data/lib/libv8/scons/engine/SCons/Tool/wix.py +2 -2
  173. data/lib/libv8/scons/engine/SCons/Tool/yacc.py +12 -2
  174. data/lib/libv8/scons/engine/SCons/Tool/zip.py +2 -2
  175. data/lib/libv8/scons/engine/SCons/Util.py +3 -3
  176. data/lib/libv8/scons/engine/SCons/Variables/BoolVariable.py +2 -2
  177. data/lib/libv8/scons/engine/SCons/Variables/EnumVariable.py +3 -3
  178. data/lib/libv8/scons/engine/SCons/Variables/ListVariable.py +2 -2
  179. data/lib/libv8/scons/engine/SCons/Variables/PackageVariable.py +2 -2
  180. data/lib/libv8/scons/engine/SCons/Variables/PathVariable.py +2 -2
  181. data/lib/libv8/scons/engine/SCons/Variables/__init__.py +2 -2
  182. data/lib/libv8/scons/engine/SCons/Warnings.py +2 -2
  183. data/lib/libv8/scons/engine/SCons/__init__.py +6 -6
  184. data/lib/libv8/scons/engine/SCons/compat/__init__.py +2 -2
  185. data/lib/libv8/scons/engine/SCons/compat/_scons_builtins.py +2 -2
  186. data/lib/libv8/scons/engine/SCons/compat/_scons_collections.py +2 -2
  187. data/lib/libv8/scons/engine/SCons/compat/_scons_dbm.py +2 -2
  188. data/lib/libv8/scons/engine/SCons/compat/_scons_hashlib.py +2 -2
  189. data/lib/libv8/scons/engine/SCons/compat/_scons_io.py +2 -2
  190. data/lib/libv8/scons/engine/SCons/cpp.py +2 -2
  191. data/lib/libv8/scons/engine/SCons/dblite.py +4 -1
  192. data/lib/libv8/scons/engine/SCons/exitfuncs.py +2 -2
  193. data/lib/libv8/scons/scons-time.1 +3 -3
  194. data/lib/libv8/scons/scons.1 +1209 -1203
  195. data/lib/libv8/scons/sconsign.1 +3 -3
  196. data/lib/libv8/scons/script/scons +22 -22
  197. data/lib/libv8/scons/script/scons-time +2 -2
  198. data/lib/libv8/scons/script/scons.bat +7 -4
  199. data/lib/libv8/scons/script/sconsign +21 -20
  200. data/lib/libv8/scons/setup.cfg +0 -1
  201. data/lib/libv8/scons/setup.py +38 -40
  202. data/lib/libv8/version.rb +4 -2
  203. data/libv8.gemspec +7 -2
  204. metadata +46 -67
@@ -1,4 +1,4 @@
1
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
1
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -88,6 +88,7 @@ engine/SCons/Tool/dmd.py
88
88
  engine/SCons/Tool/dvi.py
89
89
  engine/SCons/Tool/dvipdf.py
90
90
  engine/SCons/Tool/dvips.py
91
+ engine/SCons/Tool/f03.py
91
92
  engine/SCons/Tool/f77.py
92
93
  engine/SCons/Tool/f90.py
93
94
  engine/SCons/Tool/f95.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: scons
3
- Version: 2.0.1
3
+ Version: 2.1.0
4
4
  Summary: Open Source next-generation build tool.
5
5
  Home-page: http://www.scons.org/
6
6
  Author: Steven Knight
@@ -2,7 +2,7 @@
2
2
 
3
3
  SCons - a software construction tool
4
4
 
5
- Version 2.0.1
5
+ Version 2.1.0
6
6
 
7
7
 
8
8
  This is SCons, a tool for building software (and other files). SCons is
@@ -56,7 +56,7 @@ provided Python-standard setup script as follows:
56
56
 
57
57
  By default, the above command will do the following:
58
58
 
59
- -- Install the version-numbered "scons-2.0.1" and "sconsign-2.0.1"
59
+ -- Install the version-numbered "scons-2.1.0" and "sconsign-2.1.0"
60
60
  scripts in the default system script directory (/usr/bin or
61
61
  C:\Python*\Scripts, for example). This can be disabled by
62
62
  specifying the "--no-version-script" option on the command
@@ -70,17 +70,17 @@ By default, the above command will do the following:
70
70
  making it the default on your system.
71
71
 
72
72
  On UNIX or Linux systems, you can have the "scons" and "sconsign"
73
- scripts be hard links or symbolic links to the "scons-2.0.1" and
74
- "sconsign-2.0.1" scripts by specifying the "--hardlink-scons"
73
+ scripts be hard links or symbolic links to the "scons-2.1.0" and
74
+ "sconsign-2.1.0" scripts by specifying the "--hardlink-scons"
75
75
  or "--symlink-scons" options on the command line.
76
76
 
77
- -- Install "scons-2.0.1.bat" and "scons.bat" wrapper scripts in the
77
+ -- Install "scons-2.1.0.bat" and "scons.bat" wrapper scripts in the
78
78
  Python prefix directory on Windows (C:\Python*, for example).
79
79
  This can be disabled by specifying the "--no-install-bat" option
80
80
  on the command line.
81
81
 
82
82
  On UNIX or Linux systems, the "--install-bat" option may be
83
- specified to have "scons-2.0.1.bat" and "scons.bat" files
83
+ specified to have "scons-2.1.0.bat" and "scons.bat" files
84
84
  installed in the default system script directory, which is useful
85
85
  if you want to install SCons in a shared file system directory
86
86
  that can be used to execute SCons from both UNIX/Linux and
@@ -88,7 +88,7 @@ By default, the above command will do the following:
88
88
 
89
89
  -- Install the SCons build engine (a Python module) in an
90
90
  appropriate version-numbered SCons library directory
91
- (/usr/lib/scons-2.0.1 or C:\Python*\scons-2.0.1, for example).
91
+ (/usr/lib/scons-2.1.0 or C:\Python*\scons-2.1.0, for example).
92
92
  See below for more options related to installing the build
93
93
  engine library.
94
94
 
@@ -239,5 +239,5 @@ With plenty of help from the SCons Development team:
239
239
  Greg Spencer
240
240
  Christoph Wiedemann
241
241
 
242
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
243
- src/README.txt 5134 2010/08/16 23:02:40 bdeegan
242
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
243
+ src/README.txt 5357 2011/09/09 21:31:03 bdeegan
@@ -1,98 +1,100 @@
1
- A new SCons release, 2.0.1, is now available
1
+ A new SCons checkpoint release, 2.1.0.final.0, is now available
2
2
  on the SCons download page:
3
3
 
4
4
  http://www.scons.org/download.php
5
5
 
6
- The primary purpose of this release is to remove support for Python
7
- versions prior to 2.4 and streamline the SCons code base using more
8
- modern python idioms.
9
-
10
- Here is a summary of the changes since 1.3:
6
+ Here is a summary of the changes since 2.0:
11
7
 
12
8
  NEW FUNCTIONALITY
13
9
 
14
- - There should be no new functionality or bug fixes in this checkpoint.
15
-
16
- DEPRECATED FUNCTIONALITY
17
-
18
- - All features or usages deprecated in 1.3 should have been removed.
19
- Uses of formerly-deprecated features should get an error.
20
-
21
- - The BuildDir() method and the build_dir option now get warnings.
10
+ - SCons can now automatically embed manifests in Windows executables
11
+ and DLLs, by setting WINDOWS_EMBED_MANIFEST in the environment.
22
12
 
23
- - The SourceCode() function and its associated factory functions have
24
- started their deprecation cycle and can have a warning enabled.
13
+ - SCons now searches for site_scons dirs in several system-wide
14
+ and per-user locations, in addition to the SConstruct top dir.
15
+ This should enable much easier use of third-party (non-core)
16
+ Tools.
25
17
 
26
18
  CHANGED/ENHANCED EXISTING FUNCTIONALITY
27
19
 
28
- - Any Command() or env.Command() calls that use the following Action
29
- factory functions will have their targets rebuilt when upgrading
30
- from any pre-2.0 release:
20
+ - scons --version now prints the path to the SCons package in use
31
21
 
32
- Chmod()
33
- Copy()
34
- Delete()
35
- Mkdir()
36
- Move()
37
- Touch()
22
+ - List modifications to existing features, where the previous behavior
23
+ wouldn't actually be considered a bug
38
24
 
39
- (The rebuild occurs because the underlying Python class that
40
- implements these functions has been changed to a new-style Python
41
- class, and that changes the Python byte code and therefore the
42
- build signature of the functions.)
25
+ - Add initial support for VS/VC 2010
43
26
 
44
27
  FIXES
45
28
 
46
- - MSVC/MSVS/SDK support has been improved. A number of issues with
47
- determining the correct version and architecture have been resolved.
48
-
49
- - Fix propagation from environment of VS*COMNTOOLS to resolve issues
50
- initializing MSVC/MSVS/SDK issues.
51
-
52
- - Fixed a case-sensitivity problem with Fortran modules.
53
-
54
- - Fix the ability to append to default $*FLAGS values (which are
55
- implemented as CLVar instances) in a copied construction environment
56
- without affecting the original construction environment's value.
57
-
58
- - Updated the TeX command strings to include a /D on Windows in
59
- case the new directory is on a different drive letter.
60
-
61
- - Fixed the LaTeX scanner so dependencies are found in commands that
62
- are broken across lines with a comment or have embedded spaces.
29
+ - Windows resource compiler (RC) scanner now handles DOS line endings
30
+ - Visual Studio project generation now works when CPPPATH contains Dir nodes
31
+ - Visual Studio projects are regenerated when CPPPATH or CPPDEFINES change
32
+ NOTE: this will cause all MSVS projects to be regenerated with this version.
33
+ - Passing MSVC_BATCH=False works now (treated same as 0)
34
+ - Long compile lines no longer break MSVC_BATCH mode
35
+ - RPATH is now in LINKCOM rather than LINKFLAGS, so resetting
36
+ LINKFLAGS doesn't kill RPATH
37
+ - Precompiled headers on Windows no longer break when used with
38
+ variant dirs containing spaces.
39
+ - Delete can now delete symlinks to directories and broken symlinks
40
+ - CPPDEFINES containing dictionaries now work better.
41
+ - A problem with using implicit-cache and removing dependencies on
42
+ disk is corrected.
43
+ - A problem with FS Entries which are dirs and have builders
44
+ is corrected.
45
+ - A problem with Install() of a dir when the dest dir exists
46
+ is corrected.
47
+ - Windows subprocess output should now be more reliable.
48
+ - The users guide and man page have various fixes.
49
+ - Appending to default $*FLAGS in a copied environment
50
+ now works properly.
51
+ - LaTeX scanner is improved for broken lines or embedded spaces.
52
+ - Windows UNC paths (\\SERVER\SHARE\dir) now work much better.
63
53
 
64
54
  IMPROVEMENTS
65
55
 
66
- - Support for Python versions prior to 2.4 has been removed. As of
67
- this writing, we believe that SCons will still work with Python 2.3,
68
- but this is not guaranteed.
69
- - Code paths that included special cases for older Python versions have
70
- been streamlined.
71
- - The code base has been converted to use more modern idioms. Although
72
- we don't have any direct measurements (yet), we believe that SCons
73
- startup time should be decreased and the overall code should run faster.
74
-
75
- PACKAGING
76
-
77
- - No changes.
56
+ - ParseFlags now supports -std=c++0x and related CXXFLAGS
57
+ - ParseFlags now supports -dylib_file from pkgconfig
58
+ - New debugging options to print unlink/relinking of variant files
59
+ (--debug=duplicate) and preparation of targets (--debug=prepare).
60
+ - SCons can now generate MSVS 9.0 and 10.0 Projects and Solutions.
61
+ - MSVS Solution generation is improved.
62
+ - Fortran 03 is supported (preliminary)
63
+ - .sx files are now treated as assembly sources.
64
+ - site_scons/site_init.py is now treated as a proper module
65
+ with __doc__, __file__ and __name__.
66
+ - TeX command strings now work on Windows when the new dir is
67
+ on a different drive letter.
68
+ - DMD version 2 is supported (using the phobos2 library)
69
+ - New --debug=prepare option shows each target as it's prepared
70
+ for building; can help when you don't know why a target isn't
71
+ being built.
78
72
 
79
73
  DOCUMENTATION
80
74
 
81
- - The entries for SourceCode() and its associated factory functions now
82
- state that the functions are deprecated.
83
-
84
- - Document the AllowSubstExceptions() function in the User's Guide.
85
-
86
-
87
- DEVELOPMENT
88
-
89
- - Code no longer has to be compatible with Python versions back to 1.5.2.
90
- Although code is tested with Python 2.3 and is still believed to work,
91
- the official new floor is Python 2.4.
92
-
93
- Thanks to Greg Noel, Steven Knight, Dirk Baechle, William Deegan,
94
- W. Trevor King, Joe Zuntz, Bauke Conijn, Matt Hughes, Rob Managan,
95
- and Jim Randall for their contributions to this release.
75
+ - Added new getting started section
76
+
77
+ Thanks to
78
+ Dirk Baechle,
79
+ Vincent Beffara,
80
+ Grzegorz Bizoń,
81
+ Jean-François Colson,
82
+ Bauke Conijn,
83
+ Bill Deegan,
84
+ Ken Deeter,
85
+ Luca Falavigna,
86
+ Alexander Goomenyuk,
87
+ Justin Gullingsrud,
88
+ Steven Knight,
89
+ Arve Knudsen,
90
+ Jean-Baptiste Lab,
91
+ Rob Managan,
92
+ Gary Oberbrunner,
93
+ Evgeny Podjachev,
94
+ Sohail Somani,
95
+ Anatoly Techtonik,
96
+ Allen Weeks,
97
+ Russel Winder,
98
+ Joe Zuntz
99
+ for their contributions to this release.
96
100
 
97
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
98
- src/RELEASE.txt 5023 2010/06/14 22:05:46 scons
@@ -76,7 +76,7 @@ way for wrapping up the functions.
76
76
 
77
77
  """
78
78
 
79
- # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
79
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
80
80
  #
81
81
  # Permission is hereby granted, free of charge, to any person obtaining
82
82
  # a copy of this software and associated documentation files (the
@@ -97,7 +97,7 @@ way for wrapping up the functions.
97
97
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
98
98
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
99
99
 
100
- __revision__ = "src/engine/SCons/Action.py 5134 2010/08/16 23:02:40 bdeegan"
100
+ __revision__ = "src/engine/SCons/Action.py 5357 2011/09/09 21:31:03 bdeegan"
101
101
 
102
102
  import SCons.compat
103
103
 
@@ -300,8 +300,10 @@ def _actionAppend(act1, act2):
300
300
  # a single ListAction.
301
301
  a1 = Action(act1)
302
302
  a2 = Action(act2)
303
- if a1 is None or a2 is None:
304
- raise TypeError("Cannot append %s to %s" % (type(act1), type(act2)))
303
+ if a1 is None:
304
+ return a2
305
+ if a2 is None:
306
+ return a1
305
307
  if isinstance(a1, ListAction):
306
308
  if isinstance(a2, ListAction):
307
309
  return ListAction(a1.list + a2.list)
@@ -385,6 +387,10 @@ def _do_create_action(act, kw):
385
387
  # The list of string commands may include a LazyAction, so we
386
388
  # reprocess them via _do_create_list_action.
387
389
  return _do_create_list_action(commands, kw)
390
+ # Catch a common error case with a nice message:
391
+ if isinstance(act, int) or isinstance(act, float):
392
+ raise TypeError("Don't know how to create an Action from a number (%s)"%act)
393
+ # Else fail silently (???)
388
394
  return None
389
395
 
390
396
  def _do_create_list_action(act, kw):
@@ -497,7 +503,18 @@ class _ActionAction(ActionBase):
497
503
  SCons.Util.AddMethod(self, batch_key, 'batch_key')
498
504
 
499
505
  def print_cmd_line(self, s, target, source, env):
500
- sys.stdout.write(s + u"\n")
506
+ # In python 3, and in some of our tests, sys.stdout is
507
+ # a String io object, and it takes unicode strings only
508
+ # In other cases it's a regular Python 2.x file object
509
+ # which takes strings (bytes), and if you pass those a
510
+ # unicode object they try to decode with 'ascii' codec
511
+ # which fails if the cmd line has any hi-bit-set chars.
512
+ # This code assumes s is a regular string, but should
513
+ # work if it's unicode too.
514
+ try:
515
+ sys.stdout.write(unicode(s + "\n"))
516
+ except UnicodeDecodeError:
517
+ sys.stdout.write(s + "\n")
501
518
 
502
519
  def __call__(self, target, source, env,
503
520
  exitstatfunc=_null,
@@ -654,7 +671,6 @@ def _subproc(scons_env, cmd, error = 'ignore', **kw):
654
671
  kw['env'] = new_env
655
672
 
656
673
  try:
657
- #FUTURE return subprocess.Popen(cmd, **kw)
658
674
  return subprocess.Popen(cmd, **kw)
659
675
  except EnvironmentError, e:
660
676
  if error == 'raise': raise
@@ -76,7 +76,7 @@ There are the following methods for internal use within this module:
76
76
  """
77
77
 
78
78
  #
79
- # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
79
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
80
80
  #
81
81
  # Permission is hereby granted, free of charge, to any person obtaining
82
82
  # a copy of this software and associated documentation files (the
@@ -97,7 +97,7 @@ There are the following methods for internal use within this module:
97
97
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
98
98
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
99
99
 
100
- __revision__ = "src/engine/SCons/Builder.py 5134 2010/08/16 23:02:40 bdeegan"
100
+ __revision__ = "src/engine/SCons/Builder.py 5357 2011/09/09 21:31:03 bdeegan"
101
101
 
102
102
  import collections
103
103
 
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
2
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #
23
23
 
24
- __revision__ = "src/engine/SCons/CacheDir.py 5134 2010/08/16 23:02:40 bdeegan"
24
+ __revision__ = "src/engine/SCons/CacheDir.py 5357 2011/09/09 21:31:03 bdeegan"
25
25
 
26
26
  __doc__ = """
27
27
  CacheDir support
@@ -6,7 +6,7 @@ needed by most users.
6
6
  """
7
7
 
8
8
  #
9
- # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
9
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
10
10
  #
11
11
  # Permission is hereby granted, free of charge, to any person obtaining
12
12
  # a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ needed by most users.
28
28
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29
29
  #
30
30
 
31
- __revision__ = "src/engine/SCons/Debug.py 5134 2010/08/16 23:02:40 bdeegan"
31
+ __revision__ = "src/engine/SCons/Debug.py 5357 2011/09/09 21:31:03 bdeegan"
32
32
 
33
33
  import os
34
34
  import sys
@@ -10,7 +10,7 @@ from distutils.msvccompiler.
10
10
  """
11
11
 
12
12
  #
13
- # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
13
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
14
14
  #
15
15
  # Permission is hereby granted, free of charge, to any person obtaining
16
16
  # a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ from distutils.msvccompiler.
33
33
  #
34
34
  from __future__ import division
35
35
 
36
- __revision__ = "src/engine/SCons/Defaults.py 5134 2010/08/16 23:02:40 bdeegan"
36
+ __revision__ = "src/engine/SCons/Defaults.py 5357 2011/09/09 21:31:03 bdeegan"
37
37
 
38
38
 
39
39
  import os
@@ -199,14 +199,15 @@ def delete_func(dest, must_exist=0):
199
199
  dest = [dest]
200
200
  for entry in dest:
201
201
  entry = str(entry)
202
- if not must_exist and not os.path.exists(entry):
202
+ # os.path.exists returns False with broken links that exist
203
+ entry_exists = os.path.exists(entry) or os.path.islink(entry)
204
+ if not entry_exists and not must_exist:
203
205
  continue
204
- if not os.path.exists(entry) or os.path.isfile(entry):
205
- os.unlink(entry)
206
- continue
207
- else:
206
+ # os.path.isdir returns True when entry is a link to a dir
207
+ if os.path.isdir(entry) and not os.path.islink(entry):
208
208
  shutil.rmtree(entry, 1)
209
209
  continue
210
+ os.unlink(entry)
210
211
 
211
212
  def delete_strfunc(dest, must_exist=0):
212
213
  return 'Delete(%s)' % get_paths_str(dest)
@@ -372,10 +373,23 @@ def processDefines(defs):
372
373
  if SCons.Util.is_List(defs):
373
374
  l = []
374
375
  for d in defs:
375
- if SCons.Util.is_List(d) or isinstance(d, tuple):
376
- l.append(str(d[0]) + '=' + str(d[1]))
377
- else:
376
+ if d is None:
377
+ continue
378
+ elif SCons.Util.is_List(d) or isinstance(d, tuple):
379
+ if len(d) >= 2:
380
+ l.append(str(d[0]) + '=' + str(d[1]))
381
+ else:
382
+ l.append(str(d[0]))
383
+ elif SCons.Util.is_Dict(d):
384
+ for macro,value in d.iteritems():
385
+ if value is not None:
386
+ l.append(str(macro) + '=' + str(value))
387
+ else:
388
+ l.append(str(macro))
389
+ elif SCons.Util.is_String(d):
378
390
  l.append(str(d))
391
+ else:
392
+ raise SCons.Errors.UserError("DEFINE %s is not a list, dict, string or None."%repr(d))
379
393
  elif SCons.Util.is_Dict(defs):
380
394
  # The items in a dictionary are stored in random order, but
381
395
  # if the order of the command-line options changes from
@@ -10,7 +10,7 @@ Environment
10
10
  """
11
11
 
12
12
  #
13
- # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
13
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 The SCons Foundation
14
14
  #
15
15
  # Permission is hereby granted, free of charge, to any person obtaining
16
16
  # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ Environment
31
31
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
32
32
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33
33
 
34
- __revision__ = "src/engine/SCons/Environment.py 5134 2010/08/16 23:02:40 bdeegan"
34
+ __revision__ = "src/engine/SCons/Environment.py 5357 2011/09/09 21:31:03 bdeegan"
35
35
 
36
36
 
37
37
  import copy
@@ -649,6 +649,7 @@ class SubstitutionEnvironment(object):
649
649
  'ASFLAGS' : SCons.Util.CLVar(''),
650
650
  'CFLAGS' : SCons.Util.CLVar(''),
651
651
  'CCFLAGS' : SCons.Util.CLVar(''),
652
+ 'CXXFLAGS' : SCons.Util.CLVar(''),
652
653
  'CPPDEFINES' : [],
653
654
  'CPPFLAGS' : SCons.Util.CLVar(''),
654
655
  'CPPPATH' : [],
@@ -723,6 +724,9 @@ class SubstitutionEnvironment(object):
723
724
  append_next_arg_to = None
724
725
  elif not arg[0] in ['-', '+']:
725
726
  dict['LIBS'].append(self.fs.File(arg))
727
+ elif arg == '-dylib_file':
728
+ dict['LINKFLAGS'].append(arg)
729
+ append_next_arg_to = 'LINKFLAGS'
726
730
  elif arg[:2] == '-L':
727
731
  if arg[2:]:
728
732
  dict['LIBPATH'].append(arg[2:])
@@ -766,16 +770,20 @@ class SubstitutionEnvironment(object):
766
770
  dict['FRAMEWORKPATH'].append(arg[2:])
767
771
  else:
768
772
  append_next_arg_to = 'FRAMEWORKPATH'
769
- elif arg == '-mno-cygwin':
773
+ elif arg in ['-mno-cygwin',
774
+ '-pthread',
775
+ '-openmp',
776
+ '-fopenmp']:
770
777
  dict['CCFLAGS'].append(arg)
771
778
  dict['LINKFLAGS'].append(arg)
772
779
  elif arg == '-mwindows':
773
780
  dict['LINKFLAGS'].append(arg)
774
- elif arg == '-pthread':
775
- dict['CCFLAGS'].append(arg)
776
- dict['LINKFLAGS'].append(arg)
777
781
  elif arg[:5] == '-std=':
778
- dict['CFLAGS'].append(arg) # C only
782
+ if arg[5:].find('++')!=-1:
783
+ key='CXXFLAGS'
784
+ else:
785
+ key='CFLAGS'
786
+ dict[key].append(arg)
779
787
  elif arg[0] == '+':
780
788
  dict['CCFLAGS'].append(arg)
781
789
  dict['LINKFLAGS'].append(arg)
@@ -1146,12 +1154,17 @@ class Base(SubstitutionEnvironment):
1146
1154
  # "continue" statements whenever we finish processing an item,
1147
1155
  # but Python 1.5.2 apparently doesn't let you use "continue"
1148
1156
  # within try:-except: blocks, so we have to nest our code.
1149
- try:
1157
+ try:
1158
+ if key == 'CPPDEFINES' and SCons.Util.is_String(self._dict[key]):
1159
+ self._dict[key] = [self._dict[key]]
1150
1160
  orig = self._dict[key]
1151
1161
  except KeyError:
1152
1162
  # No existing variable in the environment, so just set
1153
1163
  # it to the new value.
1154
- self._dict[key] = val
1164
+ if key == 'CPPDEFINES' and SCons.Util.is_String(val):
1165
+ self._dict[key] = [val]
1166
+ else:
1167
+ self._dict[key] = val
1155
1168
  else:
1156
1169
  try:
1157
1170
  # Check if the original looks like a dictionary.
@@ -1188,8 +1201,13 @@ class Base(SubstitutionEnvironment):
1188
1201
  # The original looks like a dictionary, so update it
1189
1202
  # based on what we think the value looks like.
1190
1203
  if SCons.Util.is_List(val):
1191
- for v in val:
1192
- orig[v] = None
1204
+ if key == 'CPPDEFINES':
1205
+ orig = orig.items()
1206
+ orig += val
1207
+ self._dict[key] = orig
1208
+ else:
1209
+ for v in val:
1210
+ orig[v] = None
1193
1211
  else:
1194
1212
  try:
1195
1213
  update_dict(val)
@@ -1251,8 +1269,39 @@ class Base(SubstitutionEnvironment):
1251
1269
  self._dict[key].update(val)
1252
1270
  elif SCons.Util.is_List(val):
1253
1271
  dk = self._dict[key]
1254
- if not SCons.Util.is_List(dk):
1255
- dk = [dk]
1272
+ if key == 'CPPDEFINES':
1273
+ tmp = []
1274
+ for i in val:
1275
+ if SCons.Util.is_List(i):
1276
+ if len(i) >= 2:
1277
+ tmp.append((i[0], i[1]))
1278
+ else:
1279
+ tmp.append((i[0],))
1280
+ elif SCons.Util.is_Tuple(i):
1281
+ tmp.append(i)
1282
+ else:
1283
+ tmp.append((i,))
1284
+ val = tmp
1285
+ if SCons.Util.is_Dict(dk):
1286
+ dk = dk.items()
1287
+ elif SCons.Util.is_String(dk):
1288
+ dk = [(dk,)]
1289
+ else:
1290
+ tmp = []
1291
+ for i in dk:
1292
+ if SCons.Util.is_List(i):
1293
+ if len(i) >= 2:
1294
+ tmp.append((i[0], i[1]))
1295
+ else:
1296
+ tmp.append((i[0],))
1297
+ elif SCons.Util.is_Tuple(i):
1298
+ tmp.append(i)
1299
+ else:
1300
+ tmp.append((i,))
1301
+ dk = tmp
1302
+ else:
1303
+ if not SCons.Util.is_List(dk):
1304
+ dk = [dk]
1256
1305
  if delete_existing:
1257
1306
  dk = [x for x in dk if x not in val]
1258
1307
  else:
@@ -1261,15 +1310,57 @@ class Base(SubstitutionEnvironment):
1261
1310
  else:
1262
1311
  dk = self._dict[key]
1263
1312
  if SCons.Util.is_List(dk):
1264
- # By elimination, val is not a list. Since dk is a
1265
- # list, wrap val in a list first.
1266
- if delete_existing:
1267
- dk = [x for x in dk if x not in val]
1268
- self._dict[key] = dk + [val]
1313
+ if key == 'CPPDEFINES':
1314
+ tmp = []
1315
+ for i in dk:
1316
+ if SCons.Util.is_List(i):
1317
+ if len(i) >= 2:
1318
+ tmp.append((i[0], i[1]))
1319
+ else:
1320
+ tmp.append((i[0],))
1321
+ elif SCons.Util.is_Tuple(i):
1322
+ tmp.append(i)
1323
+ else:
1324
+ tmp.append((i,))
1325
+ dk = tmp
1326
+ if SCons.Util.is_Dict(val):
1327
+ val = val.items()
1328
+ elif SCons.Util.is_String(val):
1329
+ val = [(val,)]
1330
+ if delete_existing:
1331
+ dk = filter(lambda x, val=val: x not in val, dk)
1332
+ self._dict[key] = dk + val
1333
+ else:
1334
+ dk = [x for x in dk if x not in val]
1335
+ self._dict[key] = dk + val
1269
1336
  else:
1270
- if not val in dk:
1337
+ # By elimination, val is not a list. Since dk is a
1338
+ # list, wrap val in a list first.
1339
+ if delete_existing:
1340
+ dk = filter(lambda x, val=val: x not in val, dk)
1271
1341
  self._dict[key] = dk + [val]
1342
+ else:
1343
+ if not val in dk:
1344
+ self._dict[key] = dk + [val]
1272
1345
  else:
1346
+ if key == 'CPPDEFINES':
1347
+ if SCons.Util.is_String(dk):
1348
+ dk = [dk]
1349
+ elif SCons.Util.is_Dict(dk):
1350
+ dk = dk.items()
1351
+ if SCons.Util.is_String(val):
1352
+ if val in dk:
1353
+ val = []
1354
+ else:
1355
+ val = [val]
1356
+ elif SCons.Util.is_Dict(val):
1357
+ tmp = []
1358
+ for i,j in val.iteritems():
1359
+ if j is not None:
1360
+ tmp.append((i,j))
1361
+ else:
1362
+ tmp.append(i)
1363
+ val = tmp
1273
1364
  if delete_existing:
1274
1365
  dk = [x for x in dk if x not in val]
1275
1366
  self._dict[key] = dk + val
@@ -2285,6 +2376,12 @@ def NoSubstitutionProxy(subject):
2285
2376
  return getattr(self.__dict__['__subject'], name)
2286
2377
  def __setattr__(self, name, value):
2287
2378
  return setattr(self.__dict__['__subject'], name, value)
2379
+ def executor_to_lvars(self, kwdict):
2380
+ if kwdict.has_key('executor'):
2381
+ kwdict['lvars'] = kwdict['executor'].get_lvars()
2382
+ del kwdict['executor']
2383
+ else:
2384
+ kwdict['lvars'] = {}
2288
2385
  def raw_to_mode(self, dict):
2289
2386
  try:
2290
2387
  raw = dict['raw']
@@ -2301,12 +2398,14 @@ def NoSubstitutionProxy(subject):
2301
2398
  nargs = (string, self,) + args
2302
2399
  nkw = kwargs.copy()
2303
2400
  nkw['gvars'] = {}
2401
+ self.executor_to_lvars(nkw)
2304
2402
  self.raw_to_mode(nkw)
2305
2403
  return SCons.Subst.scons_subst_list(*nargs, **nkw)
2306
2404
  def subst_target_source(self, string, *args, **kwargs):
2307
2405
  nargs = (string, self,) + args
2308
2406
  nkw = kwargs.copy()
2309
2407
  nkw['gvars'] = {}
2408
+ self.executor_to_lvars(nkw)
2310
2409
  self.raw_to_mode(nkw)
2311
2410
  return SCons.Subst.scons_subst(*nargs, **nkw)
2312
2411
  return _NoSubstitutionProxy(subject)