media/webrtc/trunk/build/compiler_version.py

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rwxr-xr-x

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 #!/usr/bin/env python
     2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
     3 # Use of this source code is governed by a BSD-style license that can be
     4 # found in the LICENSE file.
     6 """Compiler version checking tool for gcc
     8 Print gcc version as XY if you are running gcc X.Y.*.
     9 This is used to tweak build flags for gcc 4.4.
    10 """
    12 import os
    13 import re
    14 import subprocess
    15 import sys
    17 def GetVersion(compiler):
    18   try:
    19     # Note that compiler could be something tricky like "distcc g++".
    20     compiler = compiler + " -dumpversion"
    21     pipe = subprocess.Popen(compiler, shell=True,
    22                             stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    23     gcc_output, gcc_error = pipe.communicate()
    24     if pipe.returncode:
    25       raise subprocess.CalledProcessError(pipe.returncode, compiler)
    27     result = re.match(r"(\d+)\.(\d+)", gcc_output)
    28     return result.group(1) + result.group(2)
    29   except Exception, e:
    30     if gcc_error:
    31       sys.stderr.write(gcc_error)
    32     print >> sys.stderr, "compiler_version.py failed to execute:", compiler
    33     print >> sys.stderr, e
    34     return ""
    36 def GetVersionFromEnvironment(compiler_env):
    37   """ Returns the version of compiler
    39   If the compiler was set by the given environment variable and exists,
    40   return its version, otherwise None is returned.
    41   """
    42   cxx = os.getenv(compiler_env, None)
    43   if cxx:
    44     cxx_version = GetVersion(cxx)
    45     if cxx_version != "":
    46       return cxx_version
    47   return None
    49 def main():
    50   # Check if CXX_target or CXX environment variable exists an if it does use
    51   # that compiler.
    52   # TODO: Fix ninja (see http://crbug.com/140900) instead and remove this code
    53   # In ninja's cross compile mode, the CXX_target is target compiler, while
    54   # the CXX is host. The CXX_target needs be checked first, though the target
    55   # and host compiler have different version, there seems no issue to use the
    56   # target compiler's version number as gcc_version in Android.
    57   cxx_version = GetVersionFromEnvironment("CXX_target")
    58   if cxx_version:
    59     print cxx_version
    60     return 0
    62   cxx_version = GetVersionFromEnvironment("CXX")
    63   if cxx_version:
    64     print cxx_version
    65     return 0
    67   # Otherwise we check the g++ version.
    68   gccversion = GetVersion("g++")
    69   if gccversion != "":
    70     print gccversion
    71     return 0
    73   return 1
    75 if __name__ == "__main__":
    76   sys.exit(main())

mercurial