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()) 56