ccc: Support -v; invent a version number for ccc for now, will be

shared with clang eventually.

llvm-svn: 63220
This commit is contained in:
Daniel Dunbar 2009-01-28 19:26:20 +00:00
parent b04867265c
commit 36ccb30a35
3 changed files with 23 additions and 10 deletions

View File

@ -883,9 +883,9 @@ class OptionParser:
# Version control. # Version control.
# FIXME: Figure out what to do about these. # FIXME: Figure out what to do about these.
self.BOption = self.addOption(JoinedOrSeparateOption('-B')) self.BOption = self.addOption(JoinedOrSeparateOption('-B', unsupported=True))
self.addOption(JoinedOrSeparateOption('-V')) self.addOption(JoinedOrSeparateOption('-V', unsupported=True))
self.addOption(JoinedOrSeparateOption('-b')) self.addOption(JoinedOrSeparateOption('-b', unsupported=True))
# Clang static analyzer options (also see -WA,). # Clang static analyzer options (also see -WA,).
self.analyzeOption = self.addOption(FlagOption('--analyze')) self.analyzeOption = self.addOption(FlagOption('--analyze'))

View File

@ -32,6 +32,9 @@ class Driver(object):
self.cccEcho = False self.cccEcho = False
self.cccFallback = False self.cccFallback = False
# Certain options suppress the 'no input files' warning.
self.suppressMissingInputWarning = False
# Host queries which can be forcibly over-riden by the user for # Host queries which can be forcibly over-riden by the user for
# testing purposes. # testing purposes.
# #
@ -208,10 +211,11 @@ class Driver(object):
raise ValueError,'Encountered unknown job.' raise ValueError,'Encountered unknown job.'
sys.exit(0) sys.exit(0)
vArg = args.getLastArg(self.parser.vOption)
for j in jobs.iterjobs(): for j in jobs.iterjobs():
if isinstance(j, Jobs.Command): if isinstance(j, Jobs.Command):
if self.cccEcho: if vArg or self.cccEcho:
print >>sys.stderr, ' '.join(map(repr,j.getArgv())) print >>sys.stderr, ' '.join(map(str,j.getArgv()))
sys.stderr.flush() sys.stderr.flush()
res = os.spawnvp(os.P_WAIT, j.executable, j.getArgv()) res = os.spawnvp(os.P_WAIT, j.executable, j.getArgv())
if res: if res:
@ -220,8 +224,8 @@ class Driver(object):
import subprocess import subprocess
procs = [] procs = []
for sj in j.commands: for sj in j.commands:
if self.cccEcho: if vArg or self.cccEcho:
print >> sys.stderr, ' '.join(map(repr,sj.getArgv())) print >> sys.stderr, ' '.join(map(str,sj.getArgv()))
sys.stdout.flush() sys.stdout.flush()
if not procs: if not procs:
@ -290,6 +294,10 @@ class Driver(object):
steps = {} steps = {}
for phase in phases: for phase in phases:
printPhase(phase, sys.stdout, steps) printPhase(phase, sys.stdout, steps)
def printVersion(self):
# FIXME: Print default target triple.
print >>sys.stderr,'ccc version 1.0'
def handleImmediateOptions(self, args): def handleImmediateOptions(self, args):
# FIXME: Some driver Arguments are consumed right off the bat, # FIXME: Some driver Arguments are consumed right off the bat,
@ -307,6 +315,11 @@ class Driver(object):
# FIXME: Do we want to report "argument unused" type errors in the # FIXME: Do we want to report "argument unused" type errors in the
# presence of things like -dumpmachine and -print-search-dirs? # presence of things like -dumpmachine and -print-search-dirs?
# Probably not. # Probably not.
if (args.getLastArg(self.parser.vOption) or
args.getLastArg(self.parser.hashHashHashOption)):
self.printVersion()
self.suppressMissingInputWarning = True
arg = (args.getLastArg(self.parser.dumpmachineOption) or arg = (args.getLastArg(self.parser.dumpmachineOption) or
args.getLastArg(self.parser.dumpversionOption) or args.getLastArg(self.parser.dumpversionOption) or
args.getLastArg(self.parser.printSearchDirsOption)) args.getLastArg(self.parser.printSearchDirsOption))
@ -432,8 +445,7 @@ class Driver(object):
if arg: if arg:
raise Arguments.InvalidArgumentsError("%s: unsupported use of internal gcc option" % ' '.join(args.render(arg))) raise Arguments.InvalidArgumentsError("%s: unsupported use of internal gcc option" % ' '.join(args.render(arg)))
if (not inputs and if not inputs and not self.suppressMissingInputWarning:
not args.getLastArg(self.parser.hashHashHashOption)):
raise Arguments.InvalidArgumentsError("no input files") raise Arguments.InvalidArgumentsError("no input files")
actions = [] actions = []

View File

@ -106,7 +106,8 @@ class CompileInfo:
ln.startswith('Target: ') or ln.startswith('Target: ') or
ln.startswith('Configured with: ') or ln.startswith('Configured with: ') or
ln.startswith('Thread model: ') or ln.startswith('Thread model: ') or
ln.startswith('gcc version')): ln.startswith('gcc version') or
ln.startswith('ccc version')):
pass pass
elif ln.strip().startswith('"'): elif ln.strip().startswith('"'):
self.commands.append(list(splitArgs(ln))) self.commands.append(list(splitArgs(ln)))