diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-01-11 22:06:22 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-01-11 22:06:22 +0000 |
commit | bee1f0d43924aa1ce6a56a803236f57d5641cb3c (patch) | |
tree | 1238c9d2829cbbc48c656b9a21211500294483e3 /tools/ccc/ccclib/Driver.py | |
parent | e99f9260d1eec79299a0d43723feec0596a1daff (diff) |
ccc: Give the Host an opportunity to switch ToolChains when binding
archs (as a driver driver).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62053 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/ccc/ccclib/Driver.py')
-rw-r--r-- | tools/ccc/ccclib/Driver.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/tools/ccc/ccclib/Driver.py b/tools/ccc/ccclib/Driver.py index b9aba39f31..b781479df6 100644 --- a/tools/ccc/ccclib/Driver.py +++ b/tools/ccc/ccclib/Driver.py @@ -565,12 +565,13 @@ class Driver(object): return '%s(%r, %r, %r)' % (self.__class__.__name__, self.source, self.type, self.baseInput) - def createJobs(phase, forwardArgs, + def createJobs(tc, phase, forwardArgs, canAcceptPipe=False, atTopLevel=False, arch=None): if isinstance(phase, Phases.InputAction): return InputInfo(phase.filename, phase.type, phase.filename) elif isinstance(phase, Phases.BindArchAction): archName = args.getValue(phase.arch) + tc = self.hostInfo.getToolChainForArch(archName) filteredArgs = [] for arg in forwardArgs: if arg.opt is self.parser.archOption: @@ -588,11 +589,11 @@ class Driver(object): else: filteredArgs.append(arg) - return createJobs(phase.inputs[0], filteredArgs, + return createJobs(tc, phase.inputs[0], filteredArgs, canAcceptPipe, atTopLevel, phase.arch) assert isinstance(phase, Phases.JobAction) - tool = self.toolChain.selectTool(phase) + tool = tc.selectTool(phase) # See if we should use an integrated CPP. We only use an # integrated cpp when we have exactly one input, since this is @@ -609,7 +610,8 @@ class Driver(object): # Only try to use pipes when exactly one input. canAcceptPipe = len(inputList) == 1 and tool.acceptsPipedInput() - inputs = [createJobs(p, forwardArgs, canAcceptPipe, False, arch) for p in inputList] + inputs = [createJobs(tc, p, forwardArgs, canAcceptPipe, False, arch) + for p in inputList] # Determine if we should output to a pipe. canOutputToPipe = canAcceptPipe and tool.canPipeOutput() @@ -679,6 +681,7 @@ class Driver(object): raise ValueError,"Cannot specify -o when generating multiple files." for phase in phases: - createJobs(phase, forward, canAcceptPipe=True, atTopLevel=True) + createJobs(self.toolChain, phase, forward, + canAcceptPipe=True, atTopLevel=True) return jobs |