Home | History | Annotate | Download | only in build
      1 #!/usr/bin/python
      2 
      3 # Copyright (c) 2009 The Chromium Authors. All rights reserved.
      4 # Use of this source code is governed by a BSD-style license that can be
      5 # found in the LICENSE file.
      6 
      7 """Compiler version checking tool for gcc
      8 
      9 Print gcc version as XY if you are running gcc X.Y.*.
     10 This is used to tweak build flags for gcc 4.4.
     11 """
     12 
     13 import os
     14 import re
     15 import subprocess
     16 import sys
     17 
     18 def GetVersion(compiler):
     19   try:
     20     # Note that compiler could be something tricky like "distcc g++".
     21     compiler = compiler + " -dumpversion"
     22     pipe = subprocess.Popen(compiler, stdout=subprocess.PIPE, shell=True)
     23     gcc_output = pipe.communicate()[0]
     24     result = re.match(r"(\d+)\.(\d+)", gcc_output)
     25     return result.group(1) + result.group(2)
     26   except Exception, e:
     27     print >> sys.stderr, "compiler_version.py failed to execute:", compiler
     28     print >> sys.stderr, e
     29     return ""
     30 
     31 def main():
     32   # Check if CXX environment variable exists and
     33   # if it does use that compiler.
     34   cxx = os.getenv("CXX", None)
     35   if cxx:
     36     cxxversion = GetVersion(cxx)
     37     if cxxversion != "":
     38       print cxxversion
     39       return 0
     40   else:
     41     # Otherwise we check the g++ version.
     42     gccversion = GetVersion("g++")
     43     if gccversion != "":
     44       print gccversion
     45       return 0
     46 
     47   return 1
     48 
     49 if __name__ == "__main__":
     50   sys.exit(main())
     51