]> granicus.if.org Git - clang/commitdiff
ccc: Use -include-pth.
authorDaniel Dunbar <daniel@zuster.org>
Fri, 20 Mar 2009 22:13:54 +0000 (22:13 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 20 Mar 2009 22:13:54 +0000 (22:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67410 91177308-0d34-0410-b5e6-96231b3b80d8

tools/ccc/ccclib/Tools.py

index a548452eeb78553ba53fafeb927964e42e9c130a..e61f9d544061c61aa349d3110bc634130a3bbb90 100644 (file)
@@ -207,19 +207,7 @@ class Clang_CompileTool(Tool):
             # No special option needed, driven by -x.
             #
             # FIXME: Don't drive this by -x, that is gross.
-
-            # FIXME: This is a total hack. Copy the input header file
-            # to the output, so that it can be -include'd by clang.
-            assert len(inputs) == 1
-            assert not isinstance(output, Jobs.PipedJob)
-            assert not isinstance(inputs[0].source, Jobs.PipedJob)
-            inputPath = arglist.getValue(inputs[0].source)
-            outputPath = os.path.join(os.path.dirname(arglist.getValue(output)),
-                                      os.path.basename(inputPath))
-            # Only do copy when the output doesn't exist.
-            if not os.path.exists(outputPath):
-                import shutil
-                shutil.copyfile(inputPath, outputPath)
+            pass
         else:
             raise ValueError,"Unexpected output type for clang tool."
 
@@ -394,19 +382,23 @@ class Clang_CompileTool(Tool):
         arglist.addLastArg(cmd_args, arglist.parser.nostdincOption)
 
         # FIXME: Clang isn't going to accept just anything here.
-        arglist.addAllArgs(cmd_args, arglist.parser.iGroup)
 
-        # Automatically load .pth or .gch files which match -include
-        # options. It's wonky, but we include looking for .gch so we
-        # can support seamless replacement into a build system already
-        # set up to be generating .gch files.
-        for arg in arglist.getArgs(arglist.parser.includeOption):
-            for suffix in ('.pth','.gch'):
-                pthPath = arglist.getValue(arg) + suffix
-                if os.path.exists(pthPath):
-                    cmd_args.append('-token-cache')
-                    cmd_args.append(pthPath)
-                    break
+        # Add i* options and automatically translate to -include-pth
+        # for transparent PCH support. It's wonky, but we include
+        # looking for .gch so we can support seamless replacement into
+        # a build system already set up to be generating .gch files.
+        for arg in arglist.getArgs(arglist.parser.iGroup):
+            if arg.opt.matches(arglist.parser.includeOption):
+                for suffix in ('.pth','.gch'):
+                    pthPath = arglist.getValue(arg) + suffix
+                    if os.path.exists(pthPath):
+                        cmd_args.append('-include-pth')
+                        cmd_args.append(pthPath)
+                        break
+                else:
+                    cmd_args.extend(arglist.render(arg))
+            else:
+                cmd_args.extend(arglist.render(arg))
 
         # Manually translate -O to -O1; let clang reject others.
         arg = arglist.getLastArg(arglist.parser.OOption)