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"