]> granicus.if.org Git - clang/commitdiff
Switch Lit to directly query the driver for the builtin inclue path.
authorChandler Carruth <chandlerc@gmail.com>
Sat, 5 Nov 2011 23:29:28 +0000 (23:29 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 5 Nov 2011 23:29:28 +0000 (23:29 +0000)
Thanks to Peter for pointing out how easy this is to do. I'm now much
happier with this solution.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143842 91177308-0d34-0410-b5e6-96231b3b80d8

test/lit.cfg

index f444b2fb92b790f2a976bb99b0a8f9f68169cd9b..2422ad09035911ee94db731465c17f78c15cf1ad 100644 (file)
@@ -148,25 +148,19 @@ 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.
-def getClangVersion(clang):
+def getClangBuiltinIncludeDir(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)
+    cmd = subprocess.Popen([clang, '-print-file-name=include'],
+                           stdout=subprocess.PIPE)
+    if not cmd.stdout:
+      lit.fatal("Couldn't find the include dir for Clang ('%s')" % clang)
+    return cmd.stdout.read().strip()
 
-    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',
-                                      getClangVersion(config.clang), 'include')
 config.substitutions.append( ('%clang_cc1',
                               '%s -cc1 -internal-nosysroot-isystem %s'
-                              % (config.clang, clang_builtin_includes)) )
+                              % (config.clang,
+                                 getClangBuiltinIncludeDir(config.clang))) )
 
 config.substitutions.append( ('%clangxx', ' ' + config.clang +
                               ' -ccc-clang-cxx -ccc-cxx '))