普通文本  |  44行  |  1.3 KB

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"