diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-09-29 17:57:10 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-09-29 17:57:10 +0000 |
commit | 640cf37c9432031412a9d3b8c2abcdff4f7f0e97 (patch) | |
tree | df48197d2592a66b4169bc23c7b7dbf6911a658d /lib/Basic/Version.cpp | |
parent | 54d56a5dadb8403a9211e82ab12ffc2e0dd83774 (diff) |
Basic: Add support for git svn to get the repo version in clang executable,
patch by Jonathan Mulder!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115049 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/Version.cpp')
-rw-r--r-- | lib/Basic/Version.cpp | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/lib/Basic/Version.cpp b/lib/Basic/Version.cpp index 036ee00545..e9649e284d 100644 --- a/lib/Basic/Version.cpp +++ b/lib/Basic/Version.cpp @@ -21,26 +21,27 @@ using namespace std; namespace clang { llvm::StringRef getClangRepositoryPath() { - static const char URL[] = "$URL$"; - const char *URLEnd = URL + strlen(URL); +#ifdef SVN_REPOSITORY + if (SVN_REPOSITORY[0] != '\0') { + static const char URL[] = SVN_REPOSITORY; + const char *URLEnd = URL + strlen(URL) - 1; - const char *End = strstr(URL, "/lib/Basic"); - if (End) - URLEnd = End; + // Strip off version from a build from an integration branch. + const char *End = strstr(URL, "/src/tools/clang"); + if (End) + URLEnd = End; - // Strip off version from a build from an integration branch. - End = strstr(URL, "/src/tools/clang"); - if (End) - URLEnd = End; + const char *Begin = strstr(URL, "cfe/"); + if (Begin) + return llvm::StringRef(Begin + 4, URLEnd - Begin - 4); - const char *Begin = strstr(URL, "cfe/"); - if (Begin) - return llvm::StringRef(Begin + 4, URLEnd - Begin - 4); - - return llvm::StringRef(URL, URLEnd - URL); + return llvm::StringRef(URL, URLEnd - URL); + } +#endif + return ""; } -std::string getClangRevision() { +llvm::StringRef getClangRevision() { #ifdef SVN_REVISION if (SVN_REVISION[0] != '\0') { std::string revision; @@ -55,10 +56,15 @@ std::string getClangRevision() { std::string getClangFullRepositoryVersion() { std::string buf; llvm::raw_string_ostream OS(buf); - OS << getClangRepositoryPath(); - const std::string &Revision = getClangRevision(); - if (!Revision.empty()) - OS << ' ' << Revision; + const llvm::StringRef &Path = getClangRepositoryPath(); + const llvm::StringRef &Revision = getClangRevision(); + if (!Path.empty()) + OS << Path; + if (!Revision.empty()) { + if (!Path.empty()) + OS << ' '; + OS << Revision; + } return OS.str(); } |