- add sources.
[platform/framework/web/crosswalk.git] / src / build / compiler_version.py
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 main():
37   # Check if CXX environment variable exists and
38   # if it does use that compiler.
39   cxx = os.getenv("CXX", None)
40   if cxx:
41     cxxversion = GetVersion(cxx)
42     if cxxversion != "":
43       print cxxversion
44       return 0
45   else:
46     # Otherwise we check the g++ version.
47     gccversion = GetVersion("g++")
48     if gccversion != "":
49       print gccversion
50       return 0
51
52   return 1
53
54 if __name__ == "__main__":
55   sys.exit(main())