media/webrtc/trunk/build/compiler_version.py

branch
TOR_BUG_9701
changeset 14
925c144e1f1f
equal deleted inserted replaced
-1:000000000000 0:d9a96a3c06a4
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.
5
6 """Compiler version checking tool for gcc
7
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 """
11
12 import os
13 import re
14 import subprocess
15 import sys
16
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)
26
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 ""
35
36 def GetVersionFromEnvironment(compiler_env):
37 """ Returns the version of compiler
38
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
48
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
61
62 cxx_version = GetVersionFromEnvironment("CXX")
63 if cxx_version:
64 print cxx_version
65 return 0
66
67 # Otherwise we check the g++ version.
68 gccversion = GetVersion("g++")
69 if gccversion != "":
70 print gccversion
71 return 0
72
73 return 1
74
75 if __name__ == "__main__":
76 sys.exit(main())

mercurial