import os
import platform
+import re
+import subprocess
+
# Configuration file for the 'lit' test runner.
# 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)) )
config.available_features.add('shell')
# Registered Targets
-import subprocess
-import re
-import os
-
def getRegisteredTargets(tool):
set_of_targets = set()