More git-svn compatible version string, by request.

If you're using git-svn, the clang and llvm repository will typically
map to a different revision.

Before we had:
clang version 3.1 (trunk 152167 trunk 152162)

After this change:
clang version 3.1 (trunk 152167) (llvm/trunk 152162)

So it's self-descriptive with an extra parens group. Which is more
compatible with version string parsers is probably debatable, but this
style was requested.

llvm-svn: 152183
This commit is contained in:
Andrew Trick 2012-03-07 00:44:24 +00:00
parent e86f8f4df9
commit 9179e8a4a3
1 changed files with 18 additions and 11 deletions

View File

@ -58,9 +58,11 @@ std::string getLLVMRepositoryPath() {
#endif
// Trim path prefix off, assuming path came from standard llvm path.
// Leave "llvm/" prefix to distinguish the following llvm revision from the
// clang revision.
size_t Start = URL.find("llvm/");
if (Start != StringRef::npos)
URL = URL.substr(Start + 5);
URL = URL.substr(Start);
return URL;
}
@ -86,20 +88,25 @@ std::string getClangFullRepositoryVersion() {
llvm::raw_string_ostream OS(buf);
std::string Path = getClangRepositoryPath();
std::string Revision = getClangRevision();
if (!Path.empty())
OS << Path;
if (!Revision.empty()) {
if (!Path.empty() || !Revision.empty()) {
OS << '(';
if (!Path.empty())
OS << ' ';
OS << Revision;
}
OS << Path;
if (!Revision.empty()) {
if (!Path.empty())
OS << ' ';
OS << Revision;
}
OS << ')';
}
// Support LLVM in a separate repository.
std::string LLVMRev = getLLVMRevision();
if (!LLVMRev.empty() && LLVMRev != Revision) {
OS << " (";
std::string LLVMRepo = getLLVMRepositoryPath();
if (!LLVMRepo.empty())
OS << ' ' << LLVMRepo;
OS << ' ' << LLVMRev;
OS << LLVMRepo << ' ';
OS << LLVMRev << ')';
}
return OS.str();
}
@ -110,8 +117,8 @@ std::string getClangFullVersion() {
#ifdef CLANG_VENDOR
OS << CLANG_VENDOR;
#endif
OS << "clang version " CLANG_VERSION_STRING " ("
<< getClangFullRepositoryVersion() << ')';
OS << "clang version " CLANG_VERSION_STRING " "
<< getClangFullRepositoryVersion();
// If vendor supplied, include the base LLVM version as well.
#ifdef CLANG_VENDOR