diff options
Diffstat (limited to 'lib/Basic/Version.cpp')
-rw-r--r-- | lib/Basic/Version.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/lib/Basic/Version.cpp b/lib/Basic/Version.cpp index 0751cfcf5d..ca65130ffc 100644 --- a/lib/Basic/Version.cpp +++ b/lib/Basic/Version.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "llvm/ADT/StringRef.h" +#include "llvm/Support/raw_ostream.h" #include <cstring> #include <cstdlib> @@ -44,13 +45,30 @@ llvm::StringRef getClangRepositoryPath() { } -unsigned getClangSubversionRevision() { +llvm::StringRef getClangRevision() { #ifndef SVN_REVISION // Subversion was not available at build time? - return 0; + return llvm::StringRef(); #else - return strtol(SVN_REVISION, 0, 10); + static std::string revision; + if (revision.empty()) { + llvm::raw_string_ostream Out(revision); + Out << strtol(SVN_REVISION, 0, 10); + } + return revision; #endif } +llvm::StringRef getClangFullRepositoryVersion() { + static std::string buf; + if (buf.empty()) { + llvm::raw_string_ostream Out(buf); + Out << getClangRepositoryPath(); + llvm::StringRef Revision = getClangRevision(); + if (!Revision.empty()) + Out << ' ' << Revision; + } + return buf; +} + } // end namespace clang |