diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-01-13 18:51:26 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-01-13 18:51:26 +0000 |
| commit | 28cffd3dbc1c0cc3f8430121977359fb79994d6d (patch) | |
| tree | df679272060790a747121dec693cb0fbb7d4acd1 /clang/tools/ccc/ccclib/Tools.py | |
| parent | bc12e920681c7bdf6def76c8f833253c4f49183a (diff) | |
| download | bcm5719-llvm-28cffd3dbc1c0cc3f8430121977359fb79994d6d.tar.gz bcm5719-llvm-28cffd3dbc1c0cc3f8430121977359fb79994d6d.zip | |
ccc: Allow internal tool chain specific argument translation.
- Pulled -Xarch processing into this.
- Get rid of manual creation of forwarding arg array.
- Use Darwin/CC1 instead of generic GCC cc1 on X86.
llvm-svn: 62172
Diffstat (limited to 'clang/tools/ccc/ccclib/Tools.py')
| -rw-r--r-- | clang/tools/ccc/ccclib/Tools.py | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/clang/tools/ccc/ccclib/Tools.py b/clang/tools/ccc/ccclib/Tools.py index 989b472b72e..1713a144abb 100644 --- a/clang/tools/ccc/ccclib/Tools.py +++ b/clang/tools/ccc/ccclib/Tools.py @@ -25,9 +25,14 @@ class Tool(object): class GCC_Common_Tool(Tool): def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist, + output, outputType, arglist, extraArgs): - cmd_args = sum(map(arglist.render, args),[]) + extraArgs + cmd_args = [] + for arg in arglist.args: + if arg.opt.forwardToGCC(): + cmd_args.extend(arglist.render(arg)) + + cmd_args.extend(extraArgs) if arch: cmd_args.extend(arglist.render(arch)) if isinstance(output, Jobs.PipedJob): @@ -70,9 +75,9 @@ class GCC_PreprocessTool(GCC_Common_Tool): Tool.eFlagsPipedOutput)) def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): return super(GCC_PreprocessTool, self).constructJob(phase, arch, jobs, inputs, - output, outputType, args, arglist, + output, outputType, arglist, ['-E']) class GCC_CompileTool(GCC_Common_Tool): @@ -83,9 +88,9 @@ class GCC_CompileTool(GCC_Common_Tool): Tool.eFlagsIntegratedCPP)) def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): return super(GCC_CompileTool, self).constructJob(phase, arch, jobs, inputs, - output, outputType, args, arglist, + output, outputType, arglist, ['-S']) class GCC_PrecompileTool(GCC_Common_Tool): @@ -95,9 +100,9 @@ class GCC_PrecompileTool(GCC_Common_Tool): Tool.eFlagsIntegratedCPP)) def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): return super(GCC_PrecompileTool, self).constructJob(phase, arch, jobs, inputs, - output, outputType, args, arglist, + output, outputType, arglist, []) class Darwin_AssembleTool(Tool): @@ -107,7 +112,7 @@ class Darwin_AssembleTool(Tool): self.toolChain = toolChain def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): assert len(inputs) == 1 assert outputType is Types.ObjectType @@ -152,9 +157,9 @@ class GCC_AssembleTool(GCC_Common_Tool): super(GCC_AssembleTool, self).__init__('gcc (as)') def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): return super(GCC_AssembleTool, self).constructJob(phase, arch, jobs, inputs, - output, outputType, args, arglist, + output, outputType, arglist, ['-c']) class GCC_LinkTool(GCC_Common_Tool): @@ -162,9 +167,9 @@ class GCC_LinkTool(GCC_Common_Tool): super(GCC_LinkTool, self).__init__('gcc (ld)') def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): return super(GCC_LinkTool, self).constructJob(phase, arch, jobs, inputs, - output, outputType, args, arglist, + output, outputType, arglist, []) class Darwin_X86_CompileTool(Tool): @@ -217,7 +222,7 @@ class Darwin_X86_CompileTool(Tool): # FIXME: Remove mcpu=G4 # FIXME: Remove mcpu=G5 - if (arglist.getLastArg(arglist.parser.gOption) and + if (arglist.getLastArg(arglist.parser.gGroup) and not arglist.getLastArg(arglist.parser.f_noEliminateUnusedDebugSymbolsOption)): cmd_args.append('-feliminate-unused-debug-symbols') @@ -231,7 +236,7 @@ class Darwin_X86_CompileTool(Tool): return os.path.splitext(self.getBaseInputName(inputs, arglist))[0] def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): inputType = inputs[0].type assert not [i for i in inputs if i.type != inputType] @@ -705,7 +710,7 @@ class Darwin_X86_LinkTool(Tool): arglist.addLastArg(cmd_args, arglist.parser.MachOption) def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): assert outputType is Types.ImageType # The logic here is derived from gcc's behavior; most of which @@ -896,7 +901,7 @@ class LipoTool(Tool): super(LipoTool, self).__init__('lipo') def constructJob(self, phase, arch, jobs, inputs, - output, outputType, args, arglist): + output, outputType, arglist): assert outputType is Types.ImageType cmd_args = ['-create'] |

