diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-03-31 00:53:51 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-03-31 00:53:51 +0000 |
commit | ad1a4c6e89594e704775ddb6b036ac982fd68cad (patch) | |
tree | 110ae5715868601a71bbb04ab7fe43520f37eeb0 /lib | |
parent | 3ecfa2d3218cdab5545f637a17ff46354873b63f (diff) |
Change Clang's __VERSION__ to include the same basic info as in clang -v.
- Please never ever ever ever write a tool that sniffs this.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128599 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Basic/Version.cpp | 13 | ||||
-rw-r--r-- | lib/Frontend/InitPreprocessor.cpp | 7 |
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/Basic/Version.cpp b/lib/Basic/Version.cpp index af2f848071..65cc2581da 100644 --- a/lib/Basic/Version.cpp +++ b/lib/Basic/Version.cpp @@ -91,4 +91,17 @@ std::string getClangFullVersion() { return OS.str(); } +std::string getClangFullCPPVersion() { + // The version string we report in __VERSION__ is just a compacted version of + // the one we report on the command line. + std::string buf; + llvm::raw_string_ostream OS(buf); +#ifdef CLANG_VENDOR + OS << CLANG_VENDOR; +#endif + OS << "Clang " CLANG_VERSION_STRING " (" + << getClangFullRepositoryVersion() << ')'; + return OS.str(); +} + } // end namespace clang diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index 3c5be253c7..928e84b185 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -247,7 +247,12 @@ static void InitializePredefinedMacros(const TargetInfo &TI, Builder.defineMacro("__GNUC_PATCHLEVEL__", "1"); Builder.defineMacro("__GNUC__", "4"); Builder.defineMacro("__GXX_ABI_VERSION", "1002"); - Builder.defineMacro("__VERSION__", "\"4.2.1 Compatible Clang Compiler\""); + + // As sad as it is, enough software depends on the __VERSION__ for version + // checks that it is necessary to report 4.2.1 (the base GCC version we claim + // compatibility with) first. + Builder.defineMacro("__VERSION__", "\"4.2.1 Compatible " + + llvm::Twine(getClangFullCPPVersion()) + "\""); // Initialize language-specific preprocessor defines. |