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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62172 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/ccc/ccclib/Tools.py b/tools/ccc/ccclib/Tools.py
index 989b472..1713a14 100644
--- a/tools/ccc/ccclib/Tools.py
+++ b/tools/ccc/ccclib/Tools.py
@@ -25,9 +25,14 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
# 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 @@
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 @@
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 @@
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']