diff options
| author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2019-07-14 08:35:24 +0200 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2019-07-14 08:35:24 +0200 | 
| commit | 697e33ed224b539a42ff68121f7497f5bbf941b2 (patch) | |
| tree | 44ae83ad6ad4a7f6762a6d1bfde3766a1993b5ec /src/engine/SCons/Platform/__init__.py | |
| parent | baee03c569c91b745a1e025660b19a718db16e7d (diff) | |
New upstream version 3.0.5upstream/3.0.5
Diffstat (limited to 'src/engine/SCons/Platform/__init__.py')
| -rw-r--r-- | src/engine/SCons/Platform/__init__.py | 64 | 
1 files changed, 48 insertions, 16 deletions
diff --git a/src/engine/SCons/Platform/__init__.py b/src/engine/SCons/Platform/__init__.py index 61a4010..ab4b293 100644 --- a/src/engine/SCons/Platform/__init__.py +++ b/src/engine/SCons/Platform/__init__.py @@ -20,7 +20,7 @@ their own platform definition.  """  # -# 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 @@ -43,7 +43,7 @@ their own platform definition.  #  from __future__ import print_function -__revision__ = "src/engine/SCons/Platform/__init__.py rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog" +__revision__ = "src/engine/SCons/Platform/__init__.py 103260fce95bf5db1c35fb2371983087d85dd611 2019-07-13 18:25:30 bdbaddog"  import SCons.compat @@ -87,6 +87,7 @@ def platform_default():      else:          return sys.platform +  def platform_module(name = platform_default()):      """Return the imported module for the platform. @@ -117,11 +118,13 @@ def platform_module(name = platform_default()):              setattr(SCons.Platform, name, mod)      return sys.modules[full_name] +  def DefaultToolList(platform, env):      """Select a default tool list for the specified platform.      """      return SCons.Tool.tool_list(platform, env) +  class PlatformSpec(object):      def __init__(self, name, generate):          self.name = name @@ -133,6 +136,7 @@ class PlatformSpec(object):      def __str__(self):          return self.name +  class TempFileMunge(object):      """A callable class.  You can set an Environment variable to this,      then call it with a string argument, then it will perform temporary @@ -140,15 +144,20 @@ class TempFileMunge(object):      line limitation.      Example usage: -    env["TEMPFILE"] = TempFileMunge -    env["LINKCOM"] = "${TEMPFILE('$LINK $TARGET $SOURCES','$LINKCOMSTR')}" +        env["TEMPFILE"] = TempFileMunge +        env["LINKCOM"] = "${TEMPFILE('$LINK $TARGET $SOURCES','$LINKCOMSTR')}"      By default, the name of the temporary file used begins with a -    prefix of '@'.  This may be configred for other tool chains by -    setting '$TEMPFILEPREFIX'. - -    env["TEMPFILEPREFIX"] = '-@'        # diab compiler -    env["TEMPFILEPREFIX"] = '-via'      # arm tool chain +    prefix of '@'.  This may be configured for other tool chains by +    setting '$TEMPFILEPREFIX': +        env["TEMPFILEPREFIX"] = '-@'        # diab compiler +        env["TEMPFILEPREFIX"] = '-via'      # arm tool chain +        env["TEMPFILEPREFIX"] = ''          # (the empty string) PC Lint + +    You can configure the extension of the temporary file through the +    TEMPFILESUFFIX variable, which defaults to '.lnk' (see comments +    in the code below): +        env["TEMPFILESUFFIX"] = '.lnt'   # PC Lint      """      def __init__(self, cmd, cmdstr = None):          self.cmd = cmd @@ -185,21 +194,26 @@ class TempFileMunge(object):          node = target[0] if SCons.Util.is_List(target) else target          cmdlist = getattr(node.attributes, 'tempfile_cmdlist', None) \                      if node is not None else None -        if cmdlist is not None : +        if cmdlist is not None:              return cmdlist          # We do a normpath because mktemp() has what appears to be          # a bug in Windows that will use a forward slash as a path -        # delimiter.  Windows's link mistakes that for a command line +        # delimiter.  Windows' link mistakes that for a command line          # switch and barfs.          # -        # We use the .lnk suffix for the benefit of the Phar Lap +        # Default to the .lnk suffix for the benefit of the Phar Lap          # linkloc linker, which likes to append an .lnk suffix if          # none is given. -        (fd, tmp) = tempfile.mkstemp('.lnk', text=True) +        if env.has_key('TEMPFILESUFFIX'): +            suffix = env.subst('$TEMPFILESUFFIX') +        else: +            suffix = '.lnk' + +        fd, tmp = tempfile.mkstemp(suffix, text=True)          native_tmp = SCons.Util.get_native_path(os.path.normpath(tmp)) -        if env.get('SHELL',None) == 'sh': +        if env.get('SHELL', None) == 'sh':              # The sh shell will try to escape the backslashes in the              # path, so unescape them.              native_tmp = native_tmp.replace('\\', r'\\\\') @@ -239,8 +253,9 @@ class TempFileMunge(object):                                 source) if self.cmdstr is not None else ''              # Print our message only if XXXCOMSTR returns an empty string              if len(cmdstr) == 0 : -                print("Using tempfile "+native_tmp+" for command line:\n"+ -                      str(cmd[0]) + " " + " ".join(args)) +                cmdstr = ("Using tempfile "+native_tmp+" for command line:\n"+ +                    str(cmd[0]) + " " + " ".join(args)) +                self._print_cmd_str(target, source, env, cmdstr)          # Store the temporary file command list into the target Node.attributes          # to avoid creating two temporary files one for print and one for execute. @@ -252,6 +267,23 @@ class TempFileMunge(object):                  pass          return cmdlist +    def _print_cmd_str(self, target, source, env, cmdstr): +        # check if the user has specified a cmd line print function +        print_func = None +        try: +            get = env.get +        except AttributeError: +            pass +        else: +            print_func = get('PRINT_CMD_LINE_FUNC') + +        # use the default action cmd line print if user did not supply one +        if not print_func: +            action = SCons.Action._ActionAction() +            action.print_cmd_line(cmdstr, target, source, env) +        else: +            print_func(cmdstr, target, source, env) +  def Platform(name = platform_default()):      """Select a canned Platform specification.  | 
