summaryrefslogtreecommitdiffstats
path: root/clang/tools/ccc/ccclib/Tools.py
diff options
context:
space:
mode:
Diffstat (limited to 'clang/tools/ccc/ccclib/Tools.py')
-rw-r--r--clang/tools/ccc/ccclib/Tools.py39
1 files changed, 22 insertions, 17 deletions
diff --git a/clang/tools/ccc/ccclib/Tools.py b/clang/tools/ccc/ccclib/Tools.py
index 989b472b72e..1713a144abb 100644
--- a/clang/tools/ccc/ccclib/Tools.py
+++ b/clang/tools/ccc/ccclib/Tools.py
@@ -25,9 +25,14 @@ class Tool(object):
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 @@ class GCC_PreprocessTool(GCC_Common_Tool):
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 @@ class GCC_CompileTool(GCC_Common_Tool):
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 @@ class GCC_PrecompileTool(GCC_Common_Tool):
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 @@ class Darwin_AssembleTool(Tool):
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 @@ class GCC_AssembleTool(GCC_Common_Tool):
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 @@ class GCC_LinkTool(GCC_Common_Tool):
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 @@ class Darwin_X86_CompileTool(Tool):
# 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 @@ class Darwin_X86_CompileTool(Tool):
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 @@ class Darwin_X86_LinkTool(Tool):
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 @@ class LipoTool(Tool):
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']
OpenPOWER on IntegriCloud