elif hasNoIntegratedCPP:
self.claim(hasNoIntegratedCPP)
-
+ # FIXME: Move to... somewhere else.
class InputInfo:
def __init__(self, source, type, baseInput):
self.source = source
def __repr__(self):
return '%s(%r, %r, %r)' % (self.__class__.__name__,
self.source, self.type, self.baseInput)
+
+ def isOriginalInput(self):
+ return self.source is self.baseInput
def createJobs(tc, phase, forwardArgs,
canAcceptPipe=False, atTopLevel=False, arch=None):
cmd_args = []
- if arglist.getLastArg(arglist.parser.gGroup):
- cmd_args.append('--gstabs')
+ # Bit of a hack, this is only used for original inputs.
+ if input.isOriginalInput():
+ if arglist.getLastArg(arglist.parser.gGroup):
+ cmd_args.append('--gstabs')
# Derived from asm spec.
if arch:
#arglist.addLastArg(cmd_args, arglist.parser._helpOption)
#arglist.addLastArg(cmd_args, arglist.parser._targetHelpOption)
+ # There is no need for this level of compatibility, but it
+ # makes diffing easier.
+ outputAtEnd = (not arglist.getLastArg(arglist.parser.syntaxOnlyOption) and
+ not arglist.getLastArg(arglist.parser.SOption))
if isinstance(output, Jobs.PipedJob):
- cmd_args.extend(['-o', '-'])
+ output_args = ['-o', '-']
elif output is None:
- cmd_args.extend(['-o', '/dev/null'])
+ output_args = ['-o', '/dev/null']
else:
- cmd_args.extend(arglist.render(output))
-
+ output_args = arglist.render(output)
+
+ if not outputAtEnd:
+ cmd_args.extend(output_args)
+
# FIXME: Still don't get what is happening here. Investigate.
arglist.addAllArgs(cmd_args, arglist.parser._paramOption)
cmd_args.append('-fprofile-arcs')
cmd_args.append('-ftest-coverage')
+ if outputAtEnd:
+ cmd_args.extend(output_args)
+
jobs.addJob(Jobs.Command(self.toolChain.getProgramPath(cc1Name),
cmd_args))