From 36ccb30a3538021a16258b0dbdd14494db317d9e Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 28 Jan 2009 19:26:20 +0000 Subject: [PATCH] ccc: Support -v; invent a version number for ccc for now, will be shared with clang eventually. llvm-svn: 63220 --- clang/tools/ccc/ccclib/Arguments.py | 6 +++--- clang/tools/ccc/ccclib/Driver.py | 24 ++++++++++++++++++------ clang/utils/CmpDriver | 3 ++- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/clang/tools/ccc/ccclib/Arguments.py b/clang/tools/ccc/ccclib/Arguments.py index 7c5765c28da2..051498f31052 100644 --- a/clang/tools/ccc/ccclib/Arguments.py +++ b/clang/tools/ccc/ccclib/Arguments.py @@ -883,9 +883,9 @@ class OptionParser: # Version control. # FIXME: Figure out what to do about these. - self.BOption = self.addOption(JoinedOrSeparateOption('-B')) - self.addOption(JoinedOrSeparateOption('-V')) - self.addOption(JoinedOrSeparateOption('-b')) + self.BOption = self.addOption(JoinedOrSeparateOption('-B', unsupported=True)) + self.addOption(JoinedOrSeparateOption('-V', unsupported=True)) + self.addOption(JoinedOrSeparateOption('-b', unsupported=True)) # Clang static analyzer options (also see -WA,). self.analyzeOption = self.addOption(FlagOption('--analyze')) diff --git a/clang/tools/ccc/ccclib/Driver.py b/clang/tools/ccc/ccclib/Driver.py index 095745facc65..6749dae13293 100644 --- a/clang/tools/ccc/ccclib/Driver.py +++ b/clang/tools/ccc/ccclib/Driver.py @@ -32,6 +32,9 @@ class Driver(object): self.cccEcho = 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 # testing purposes. # @@ -208,10 +211,11 @@ class Driver(object): raise ValueError,'Encountered unknown job.' sys.exit(0) + vArg = args.getLastArg(self.parser.vOption) for j in jobs.iterjobs(): if isinstance(j, Jobs.Command): - if self.cccEcho: - print >>sys.stderr, ' '.join(map(repr,j.getArgv())) + if vArg or self.cccEcho: + print >>sys.stderr, ' '.join(map(str,j.getArgv())) sys.stderr.flush() res = os.spawnvp(os.P_WAIT, j.executable, j.getArgv()) if res: @@ -220,8 +224,8 @@ class Driver(object): import subprocess procs = [] for sj in j.commands: - if self.cccEcho: - print >> sys.stderr, ' '.join(map(repr,sj.getArgv())) + if vArg or self.cccEcho: + print >> sys.stderr, ' '.join(map(str,sj.getArgv())) sys.stdout.flush() if not procs: @@ -290,6 +294,10 @@ class Driver(object): steps = {} for phase in phases: printPhase(phase, sys.stdout, steps) + + def printVersion(self): + # FIXME: Print default target triple. + print >>sys.stderr,'ccc version 1.0' def handleImmediateOptions(self, args): # 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 # presence of things like -dumpmachine and -print-search-dirs? # 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 args.getLastArg(self.parser.dumpversionOption) or args.getLastArg(self.parser.printSearchDirsOption)) @@ -432,8 +445,7 @@ class Driver(object): if arg: raise Arguments.InvalidArgumentsError("%s: unsupported use of internal gcc option" % ' '.join(args.render(arg))) - if (not inputs and - not args.getLastArg(self.parser.hashHashHashOption)): + if not inputs and not self.suppressMissingInputWarning: raise Arguments.InvalidArgumentsError("no input files") actions = [] diff --git a/clang/utils/CmpDriver b/clang/utils/CmpDriver index 54209843df7f..97c91a820915 100755 --- a/clang/utils/CmpDriver +++ b/clang/utils/CmpDriver @@ -106,7 +106,8 @@ class CompileInfo: ln.startswith('Target: ') or ln.startswith('Configured with: ') or ln.startswith('Thread model: ') or - ln.startswith('gcc version')): + ln.startswith('gcc version') or + ln.startswith('ccc version')): pass elif ln.strip().startswith('"'): self.commands.append(list(splitArgs(ln)))