ccc: Honor -ccc-clang for generic GCC toolchain.

llvm-svn: 63277
This commit is contained in:
Daniel Dunbar 2009-01-29 06:12:22 +00:00
parent a590802ed6
commit df49b7cf2f
2 changed files with 24 additions and 7 deletions

View File

@ -205,9 +205,10 @@ class Generic_GCC_ToolChain(ToolChain):
def __init__(self, driver):
super(Generic_GCC_ToolChain, self).__init__(driver)
cc = Tools.GCC_CompileTool()
self.clangTool = Tools.Clang_CompileTool(self)
self.toolMap = {
Phases.PreprocessPhase : Tools.GCC_PreprocessTool(),
Phases.AnalyzePhase : Tools.Clang_CompileTool(self),
Phases.AnalyzePhase : self.clangTool,
Phases.SyntaxOnlyPhase : cc,
Phases.EmitLLVMPhase : cc,
Phases.CompilePhase : cc,
@ -218,4 +219,18 @@ class Generic_GCC_ToolChain(ToolChain):
def selectTool(self, action):
assert isinstance(action, Phases.JobAction)
if self.driver.cccClang:
if (action.inputs[0].type in (Types.CType, Types.CTypeNoPP,
Types.ObjCType, Types.ObjCTypeNoPP) and
(isinstance(action.phase, Phases.PreprocessPhase) or
isinstance(action.phase, Phases.CompilePhase) or
isinstance(action.phase, Phases.SyntaxOnlyPhase) or
isinstance(action.phase, Phases.EmitLLVMPhase))):
return self.clangTool
elif (action.inputs[0].type in (Types.CHeaderType, Types.CHeaderNoPPType,
Types.ObjCHeaderType, Types.ObjCHeaderNoPPType) and
isinstance(action.phase, Phases.PrecompilePhase)):
return self.clangTool
return self.toolMap[action.phase.__class__]

View File

@ -247,12 +247,14 @@ class Clang_CompileTool(Tool):
not arglist.getLastArg(arglist.parser.staticOption) and
not arglist.getLastArg(arglist.parser.m_dynamicNoPicOption)))
archName = arglist.getValue(arch)
if (archName == 'x86_64' or
picEnabled):
cmd_args.append('--relocation-model=pic')
elif not arglist.getLastArg(arglist.parser.m_dynamicNoPicOption):
cmd_args.append('--relocation-model=static')
# FIXME: This needs to tie into a platform hook.
if arch:
archName = arglist.getValue(arch)
if (archName == 'x86_64' or
picEnabled):
cmd_args.append('--relocation-model=pic')
elif not arglist.getLastArg(arglist.parser.m_dynamicNoPicOption):
cmd_args.append('--relocation-model=static')
if arglist.getLastArg(arglist.parser.f_timeReportOption):
cmd_args.append('--time-passes')