| import os |
| import subprocess |
| import re |
| import sys |
| |
| def which(cmd): |
| for p in os.environ["PATH"].split(os.pathsep): |
| clang_path = os.path.join(p, cmd) |
| if os.path.exists(clang_path): |
| return clang_path |
| return None |
| |
| CLANG_VERSION_REGEX=".*version\s*([0-9]*\.[0-9]*)\.*" |
| clang_path = which("clang++") |
| clang_version_major = 0 |
| clang_version_minor = 0 |
| |
| if clang_path: |
| clang_version_out = subprocess.Popen([clang_path, "--version"], |
| stdout=subprocess.PIPE).communicate()[0] |
| clang_version_match = re.search(CLANG_VERSION_REGEX, clang_version_out) |
| clang_version_str = clang_version_match.group(1) |
| clang_version_array = clang_version_str.split('.') |
| clang_version_major = int(clang_version_array[0]) |
| clang_version_minor = int(clang_version_array[1]) |
| |
| if clang_version_major >= 3 and clang_version_minor >= 5: |
| print "" |
| else: |
| # Loop in support clang version only |
| clang_version_major = 3 |
| clang_version_minor = 9 |
| while clang_version_major >= 3 and clang_version_minor >= 5: |
| clang_version_str = "%d.%d" % (clang_version_major, clang_version_minor) |
| clang_path = which("clang++-" + clang_version_str) |
| if clang_path: |
| print clang_version_str |
| sys.exit(0) |
| clang_version_minor -= 1 |
| if clang_version_minor < 0: |
| clang_version_minor = 9 |
| clang_version_major -= 1 |
| print "None" |