summaryrefslogtreecommitdiff
path: root/engine/SCons/Tool/msvc.py
diff options
context:
space:
mode:
authorLuca Falavigna <dktrkranz@debian.org>2010-01-23 15:06:55 +0100
committerLuca Falavigna <dktrkranz@debian.org>2010-01-23 15:06:55 +0100
commit7764805dd1d4df1cf1bdfe2ad1f2e130d91f515a (patch)
tree95b28dc77d5ca2efa89507b61c1cf89f8551e853 /engine/SCons/Tool/msvc.py
parent9b73d2781acfc322319eb5c59b30f2dfa0fea977 (diff)
Imported Upstream version 1.2.0.d20100117upstream/1.2.0.d20100117
Diffstat (limited to 'engine/SCons/Tool/msvc.py')
-rw-r--r--engine/SCons/Tool/msvc.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/engine/SCons/Tool/msvc.py b/engine/SCons/Tool/msvc.py
index 424d099..9f29ab2 100644
--- a/engine/SCons/Tool/msvc.py
+++ b/engine/SCons/Tool/msvc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
+# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/msvc.py 4577 2009/12/27 19:43:56 scons"
+__revision__ = "src/engine/SCons/Tool/msvc.py 4629 2010/01/17 22:23:21 scons"
import os.path
import re
@@ -89,8 +89,20 @@ def object_emitter(target, source, env, parent_emitter):
parent_emitter(target, source, env)
- if env.has_key('PCH') and env['PCH']:
- env.Depends(target, env['PCH'])
+ # Add a dependency, but only if the target (e.g. 'Source1.obj')
+ # doesn't correspond to the pre-compiled header ('Source1.pch').
+ # If the basenames match, then this was most likely caused by
+ # someone adding the source file to both the env.PCH() and the
+ # env.Program() calls, and adding the explicit dependency would
+ # cause a cycle on the .pch file itself.
+ #
+ # See issue #2505 for a discussion of what to do if it turns
+ # out this assumption causes trouble in the wild:
+ # http://scons.tigris.org/issues/show_bug.cgi?id=2505
+ if env.has_key('PCH'):
+ pch = env['PCH']
+ if str(target[0]) != SCons.Util.splitext(str(pch))[0] + '.obj':
+ env.Depends(target, pch)
return (target, source)