diff options
-rw-r--r-- | test/lit.cfg | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/test/lit.cfg b/test/lit.cfg index 35f38aa44a..f444b2fb92 100644 --- a/test/lit.cfg +++ b/test/lit.cfg @@ -2,6 +2,9 @@ import os import platform +import re +import subprocess + # Configuration file for the 'lit' test runner. @@ -145,11 +148,22 @@ if not lit.quiet: # Note that when substituting %clang_cc1 also fill in the include directory of # the builtin headers. Those are part of even a freestanding environment, but # Clang relies on the driver to locate them. -# FIXME: It might be nice to teach the frontend how to find its builtin headers -# in some limited cases when the driver provides no hints. +def getClangVersion(clang): + # FIXME: Rather than just getting the version, we should have clang print + # out its resource dir here in an easy to scrape form. + cmd = subprocess.Popen([clang, '-v'], stderr=subprocess.PIPE) + + for line in cmd.stderr: + m = re.match( r'^clang version ([^ ]+) ', line) + if m is not None: + return m.group(1) + + lit.fatal("Couldn't find the version of Clang ('%s')" % clang) + clang_directory = os.path.dirname(os.path.realpath(config.clang)) clang_builtin_includes = os.path.join(os.path.dirname(clang_directory), - 'lib', 'clang', '3.0', 'include') + 'lib', 'clang', + getClangVersion(config.clang), 'include') config.substitutions.append( ('%clang_cc1', '%s -cc1 -internal-nosysroot-isystem %s' % (config.clang, clang_builtin_includes)) ) @@ -187,10 +201,6 @@ if platform.system() not in ['Windows'] or lit.getBashPath() != '': config.available_features.add('shell') # Registered Targets -import subprocess -import re -import os - def getRegisteredTargets(tool): set_of_targets = set() |