diff options
-rw-r--r-- | build/common.gypi | 3 | ||||
-rwxr-xr-x | build/compiler_version.py | 50 |
2 files changed, 53 insertions, 0 deletions
diff --git a/build/common.gypi b/build/common.gypi index 05c8de9d..52ce4d2 100644 --- a/build/common.gypi +++ b/build/common.gypi @@ -182,6 +182,9 @@ 'conditions': [ ['OS=="linux"', { + # This will set gcc_version to XY if you are running gcc X.Y.*. + # This is used to tweak build flags for gcc 4.4. + 'gcc_version%': '<!(python <(DEPTH)/build/compiler_version.py)', 'conditions': [ ['branding=="Chrome" or linux_chromium_breakpad==1', { 'linux_breakpad%': 1, diff --git a/build/compiler_version.py b/build/compiler_version.py new file mode 100755 index 0000000..5eb467c --- /dev/null +++ b/build/compiler_version.py @@ -0,0 +1,50 @@ +#!/usr/bin/python + +# Copyright (c) 2009 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Compiler version checking tool for gcc + +Print gcc version as XY if you are running gcc X.Y.*. +This is used to tweak build flags for gcc 4.4. +""" + +import os +import re +import subprocess +import sys + +def GetVersion(compiler): + try: + # Note that compiler could be something tricky like "distcc g++". + compiler = compiler + " -dumpversion" + pipe = subprocess.Popen(compiler, stdout=subprocess.PIPE, shell=True) + gcc_output = pipe.communicate()[0] + result = re.match(r"(\d+)\.(\d+)\..*", gcc_output) + return result.group(1) + result.group(2) + except Exception, e: + print >> sys.stderr, "compiler_version.py failed to execute:", compiler + print >> sys.stderr, e + return "" + +def main(): + # Check if CXX environment variable exists and + # if it does use that compiler. + cxx = os.getenv("CXX", None) + if cxx: + cxxversion = GetVersion(cxx) + if cxxversion != "": + print cxxversion + return 0 + else: + # Otherwise we check the g++ version. + gccversion = GetVersion("g++") + if gccversion != "": + print gccversion + return 0 + + return 1 + +if __name__ == "__main__": + sys.exit(main()) |