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
9Print gcc version as XY if you are running gcc X.Y.*.
10This is used to tweak build flags for gcc 4.4.
11"""
12
13import os
14import re
15import subprocess
16import sys
17
18def 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
31def 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
49if __name__ == "__main__":
50  sys.exit(main())
51