diff options
Diffstat (limited to 'engine/SCons/Tool/msvc.py')
| -rw-r--r-- | engine/SCons/Tool/msvc.py | 30 | 
1 files changed, 22 insertions, 8 deletions
diff --git a/engine/SCons/Tool/msvc.py b/engine/SCons/Tool/msvc.py index c36b5b2..d94a037 100644 --- a/engine/SCons/Tool/msvc.py +++ b/engine/SCons/Tool/msvc.py @@ -9,7 +9,7 @@ selection method.  """  # -# Copyright (c) 2001 - 2017 The SCons Foundation +# Copyright (c) 2001 - 2019 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,9 +31,10 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/msvc.py 74b2c53bc42290e911b334a6b44f187da698a668 2017/11/14 13:16:53 bdbaddog" +__revision__ = "src/engine/SCons/Tool/msvc.py 72ae09dc35ac2626f8ff711d8c4b30b6138e08e3 2019-08-08 14:50:06 bdeegan"  import os.path +import os  import re  import sys @@ -112,7 +113,7 @@ def object_emitter(target, source, env, parent_emitter):      #      # 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 +    # https://github.com/SCons/scons/issues/2505      if 'PCH' in env:          pch = env['PCH']          if str(target[0]) != SCons.Util.splitext(str(pch))[0] + '.obj': @@ -161,7 +162,7 @@ def msvc_batch_key(action, env, target, source):      # 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): +    if 'MSVC_BATCH' not in env or env.subst('$MSVC_BATCH') in ('0', 'False', '', None):          # We're not using batching; return no key.          return None      t = target[0] @@ -187,7 +188,7 @@ def msvc_output_flag(target, source, env, for_signature):      # 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): +    if 'MSVC_BATCH' not 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 @@ -195,7 +196,10 @@ def msvc_output_flag(target, source, env, for_signature):          # that the test(s) for this can be run on non-Windows systems          # without having a hard-coded backslash mess up command-line          # argument parsing. -        return '/Fo${TARGET.dir}' + os.sep +        # Adding double os.sep's as if the TARGET.dir has a space or otherwise +        # needs to be quoted they are needed per MSVC's odd behavior +        # See: https://github.com/SCons/scons/issues/3106 +        return '/Fo${TARGET.dir}' + os.sep*2  CAction = SCons.Action.Action("$CCCOM", "$CCCOMSTR",                                batch_key=msvc_batch_key, @@ -259,7 +263,7 @@ def generate(env):      env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1      env['RC'] = 'rc' -    env['RCFLAGS'] = SCons.Util.CLVar('') +    env['RCFLAGS'] = SCons.Util.CLVar('/nologo')      env['RCSUFFIXES']=['.rc','.rc2']      env['RCCOM'] = '$RC $_CPPDEFFLAGS $_CPPINCFLAGS $RCFLAGS /fo$TARGET $SOURCES'      env['BUILDERS']['RES'] = res_builder @@ -268,6 +272,10 @@ def generate(env):      env['SHOBJPREFIX']    = '$OBJPREFIX'      env['SHOBJSUFFIX']    = '$OBJSUFFIX' +    # MSVC probably wont support unistd.h so default +    # without it for lex generation +    env["LEXUNISTD"] = SCons.Util.CLVar("--nounistd") +      # Set-up ms tools paths      msvc_setup_env_once(env) @@ -276,6 +284,12 @@ def generate(env):      msvc_set_PCHPDBFLAGS(env) +    # Issue #3350 +    # Change tempfile argument joining character from a space to a newline +    # mslink will fail if any single line is too long, but is fine with many lines +    # in a tempfile +    env['TEMPFILEARGJOIN'] = os.linesep +      env['PCHCOM'] = '$CXX /Fo${TARGETS[1]} $CXXFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Yc$PCHSTOP /Fp${TARGETS[0]} $CCPDBFLAGS $PCHPDBFLAGS'      env['BUILDERS']['PCH'] = pch_builder @@ -286,7 +300,7 @@ def generate(env):          env['ENV']['SystemRoot'] = SCons.Platform.win32.get_system_root()  def exists(env): -    return msvc_exists() +    return msvc_exists(env)  # Local Variables:  # tab-width:4  | 
