summaryrefslogtreecommitdiffstats
path: root/clang/tools/ccc/ccclib/ToolChain.py
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-01-13 18:51:26 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-01-13 18:51:26 +0000
commit28cffd3dbc1c0cc3f8430121977359fb79994d6d (patch)
treedf679272060790a747121dec693cb0fbb7d4acd1 /clang/tools/ccc/ccclib/ToolChain.py
parentbc12e920681c7bdf6def76c8f833253c4f49183a (diff)
downloadbcm5719-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.py29
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),
OpenPOWER on IntegriCloud