driver: Print --version on stdout, to match gcc.

- Patch by Jean-Daniel Dupas

llvm-svn: 76632
This commit is contained in:
Daniel Dunbar 2009-07-21 20:06:58 +00:00
parent 1e08ca7313
commit 08e41d65a2
2 changed files with 11 additions and 8 deletions

View file

@ -21,6 +21,9 @@
#include <set>
#include <string>
namespace llvm {
class raw_ostream;
}
namespace clang {
namespace driver {
class Action;
@ -185,7 +188,7 @@ public:
void PrintOptions(const ArgList &Args) const;
/// PrintVersion - Print the driver version.
void PrintVersion(const Compilation &C) const;
void PrintVersion(const Compilation &C, llvm::raw_ostream &OS) const;
/// GetFilePath - Lookup \arg Name in the list of file search paths.
///

View file

@ -385,7 +385,7 @@ void Driver::PrintHelp(bool ShowHidden) const {
OS.flush();
}
void Driver::PrintVersion(const Compilation &C) const {
void Driver::PrintVersion(const Compilation &C, llvm::raw_ostream &OS) const {
static char buf[] = "$URL$";
char *zap = strstr(buf, "/lib/Driver");
if (zap)
@ -402,17 +402,16 @@ void Driver::PrintVersion(const Compilation &C) const {
#endif
// FIXME: The following handlers should use a callback mechanism, we
// don't know what the client would like to do.
llvm::errs() << "clang version " CLANG_VERSION_STRING " ("
OS << "clang version " CLANG_VERSION_STRING " ("
<< vers << " " << revision << ")" << '\n';
const ToolChain &TC = C.getDefaultToolChain();
llvm::errs() << "Target: " << TC.getTripleString() << '\n';
OS << "Target: " << TC.getTripleString() << '\n';
// Print the threading model.
//
// FIXME: Implement correctly.
llvm::errs() << "Thread model: " << "posix" << '\n';
OS << "Thread model: " << "posix" << '\n';
}
bool Driver::HandleImmediateArgs(const Compilation &C) {
@ -432,13 +431,14 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
}
if (C.getArgs().hasArg(options::OPT__version)) {
PrintVersion(C);
// Follow gcc behavior and use stdout for --version and stderr for -v
PrintVersion(C, llvm::outs());
return false;
}
if (C.getArgs().hasArg(options::OPT_v) ||
C.getArgs().hasArg(options::OPT__HASH_HASH_HASH)) {
PrintVersion(C);
PrintVersion(C, llvm::errs());
SuppressMissingInputWarning = true;
}