blob: 69f0a50be0b298c5b02f34d6571c4a99aff6dbf5 [file] [log] [blame]
craig.schlenter@chromium.orgd9110cb2009-11-04 02:32:10 +09001#!/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]
evan@chromium.orgab425672009-11-04 04:27:51 +090024 result = re.match(r"(\d+)\.(\d+)", gcc_output)
craig.schlenter@chromium.orgd9110cb2009-11-04 02:32:10 +090025 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())