diff options
author | Gary Oberbrunner <garyo@oberbrunner.com> | 2011-04-24 21:32:20 (GMT) |
---|---|---|
committer | Gary Oberbrunner <garyo@oberbrunner.com> | 2011-04-24 21:32:20 (GMT) |
commit | 479a07af42147d77f3bae4cbb32eae407fb9dc24 (patch) | |
tree | 71aea99f0013fe3365d718df212c67fd474dfc34 /src | |
parent | a61777f9fb10310e60a400fe2afe553b9878588a (diff) | |
download | SCons-479a07af42147d77f3bae4cbb32eae407fb9dc24.zip SCons-479a07af42147d77f3bae4cbb32eae407fb9dc24.tar.gz SCons-479a07af42147d77f3bae4cbb32eae407fb9dc24.tar.bz2 |
Fix issue 2627: MSVC_BATCH=False should turn off batch, not turn it on.
Diffstat (limited to 'src')
-rw-r--r-- | src/CHANGES.txt | 1 | ||||
-rw-r--r-- | src/RELEASE.txt | 1 | ||||
-rw-r--r-- | src/engine/SCons/Tool/msvc.py | 18 |
3 files changed, 16 insertions, 4 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 6c930e6..7066eec 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -9,6 +9,7 @@ RELEASE 2.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE From Grzegorz Bizoń: - Fix long compile lines in batch mode by using TEMPFILE + - Fix MSVC_BATCH=False (was treating it as true) From Justin Gullingsrud: - support -std=c++0x and related CXXFLAGS in pkgconfig (ParseFlags) diff --git a/src/RELEASE.txt b/src/RELEASE.txt index 6fde09c..67f27a4 100644 --- a/src/RELEASE.txt +++ b/src/RELEASE.txt @@ -56,6 +56,7 @@ FIXES + - Passing MSVC_BATCH=False works now (treated same as 0) - Long compile lines no longer break MSVC_BATCH mode - RPATH is now in LINKCOM rather than LINKFLAGS, so resetting LINKFLAGS doesn't kill RPATH diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py index 36b65ca..d42c257 100644 --- a/src/engine/SCons/Tool/msvc.py +++ b/src/engine/SCons/Tool/msvc.py @@ -140,8 +140,13 @@ def msvc_batch_key(action, env, target, source): Returning None specifies that the specified target+source should not be batched with other compilations. """ - b = env.subst('$MSVC_BATCH') - if b in (None, '', '0'): + + # Fixing MSVC_BATCH mode. Previous if did not work when MSVC_BATCH + # was set to False. This new version should work better. + # Note we need to do the env.subst so $MSVC_BATCH can be a reference to + # another construction variable, which is why we test for False and 0 + # as strings. + if not 'MSVC_BATCH' in env or env.subst('$MSVC_BATCH') in ('0', 'False', '', None): # We're not using batching; return no key. return None t = target[0] @@ -161,8 +166,13 @@ def msvc_output_flag(target, source, env, for_signature): we return an /Fo string that just specifies the first target's directory (where the Visual C/C++ compiler will put the .obj files). """ - b = env.subst('$MSVC_BATCH') - if b in (None, '', '0') or len(source) == 1: + + # Fixing MSVC_BATCH mode. Previous if did not work when MSVC_BATCH + # was set to False. This new version should work better. Removed + # len(source)==1 as batch mode can compile only one file + # (and it also fixed problem with compiling only one changed file + # with batch mode enabled) + if not 'MSVC_BATCH' in env or env.subst('$MSVC_BATCH') in ('0', 'False', '', None): return '/Fo$TARGET' else: # The Visual C/C++ compiler requires a \ at the end of the /Fo |