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/ToolChain.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/ToolChain.py')
| -rw-r--r-- | clang/tools/ccc/ccclib/ToolChain.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/clang/tools/ccc/ccclib/ToolChain.py b/clang/tools/ccc/ccclib/ToolChain.py index 698b1bfecc6..07ac926af1e 100644 --- a/clang/tools/ccc/ccclib/ToolChain.py +++ b/clang/tools/ccc/ccclib/ToolChain.py @@ -1,3 +1,4 @@ +import Arguments import Phases import Tools @@ -14,6 +15,32 @@ class ToolChain(object): some particular action.""" abstract + def translateArgs(self, args, arch): + """translateArgs - Callback to allow argument translation for + an entire toolchain.""" + + # FIXME: Would be nice to move arch handling out of generic + # code. + if arch: + archName = args.getValue(arch) + al = Arguments.DerivedArgList(args) + for arg in args.args: + if arg.opt is args.parser.archOption: + if arg is arch: + al.append(arg) + elif arg.opt is args.parser.XarchOption: + if args.getJoinedValue(arg) == archName: + # FIXME: Fix this. + arg = args.parser.lookupOptForArg(Arguments.InputIndex(0, arg.index.pos + 1), + args.getSeparateValue(arg), + iter([])) + al.append(arg) + else: + al.append(arg) + return al + else: + return args + class Darwin_X86_ToolChain(ToolChain): def __init__(self, driver, darwinVersion, gccVersion): super(Darwin_X86_ToolChain, self).__init__(driver) @@ -24,7 +51,7 @@ class Darwin_X86_ToolChain(ToolChain): self.toolMap = { Phases.PreprocessPhase : Tools.GCC_PreprocessTool(), - Phases.CompilePhase : Tools.GCC_CompileTool(), + Phases.CompilePhase : Tools.Darwin_X86_CompileTool(self), Phases.PrecompilePhase : Tools.GCC_PrecompileTool(), Phases.AssemblePhase : Tools.Darwin_AssembleTool(self), Phases.LinkPhase : Tools.Darwin_X86_LinkTool(self), |

