From 420d7ccbac0f499a6ff9595bdbfa99cd3376df22 Mon Sep 17 00:00:00 2001 From: Alp Toker Date: Fri, 6 Jun 2014 06:58:25 +0000 Subject: [PATCH] Devise a package-private means to determine the LLVM version string This will unbreak clang vendor builds as a follow-up to r210238, now that we can't poke into LLVM's private config.h (nor should the string be exposed by llvm-config.h). This hopefully removes for good the last include of LLVM's config.h. llvm-svn: 210313 --- clang/CMakeLists.txt | 3 +++ clang/include/clang/Config/config.h.cmake | 3 +++ clang/include/clang/Config/config.h.in | 5 +++++ clang/lib/Basic/Version.cpp | 4 ++-- clang/lib/Frontend/CompilerInstance.cpp | 5 ++--- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt index ece6bf8bce40..28f4e3fb81f6 100644 --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -156,6 +156,9 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) endif() set( CLANG_BUILT_STANDALONE 1 ) + set(BACKEND_PACKAGE_STRING "LLVM ${LLVM_PACKAGE_VERSION}") +else() + set(BACKEND_PACKAGE_STRING "${PACKAGE_STRING}") endif() find_package(LibXml2) diff --git a/clang/include/clang/Config/config.h.cmake b/clang/include/clang/Config/config.h.cmake index 8fa7a52a3e42..40a6cb3a2e3e 100644 --- a/clang/include/clang/Config/config.h.cmake +++ b/clang/include/clang/Config/config.h.cmake @@ -19,4 +19,7 @@ /* Define if we have libxml2 */ #cmakedefine CLANG_HAVE_LIBXML ${CLANG_HAVE_LIBXML} +/* The LLVM product name and version */ +#define BACKEND_PACKAGE_STRING "${BACKEND_PACKAGE_STRING}" + #endif diff --git a/clang/include/clang/Config/config.h.in b/clang/include/clang/Config/config.h.in index d66b4cf68dbc..450ea9b613e8 100644 --- a/clang/include/clang/Config/config.h.in +++ b/clang/include/clang/Config/config.h.in @@ -22,4 +22,9 @@ /* Define if we have libxml2 */ #undef CLANG_HAVE_LIBXML +#undef PACKAGE_STRING + +/* The LLVM product name and version */ +#define BACKEND_PACKAGE_STRING PACKAGE_STRING + #endif diff --git a/clang/lib/Basic/Version.cpp b/clang/lib/Basic/Version.cpp index ae32c011396d..c2b7753d4128 100644 --- a/clang/lib/Basic/Version.cpp +++ b/clang/lib/Basic/Version.cpp @@ -13,7 +13,7 @@ #include "clang/Basic/Version.h" #include "clang/Basic/LLVM.h" -#include "llvm/Config/config.h" +#include "clang/Config/config.h" #include "llvm/Support/raw_ostream.h" #include #include @@ -130,7 +130,7 @@ std::string getClangToolFullVersion(StringRef ToolName) { // If vendor supplied, include the base LLVM version as well. #ifdef CLANG_VENDOR - OS << " (based on LLVM " << PACKAGE_VERSION << ")"; + OS << " (based on " << BACKEND_PACKAGE_STRING << ")"; #endif return OS.str(); diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index a967c0ab5467..f5e2749a718d 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -16,6 +16,7 @@ #include "clang/Basic/SourceManager.h" #include "clang/Basic/TargetInfo.h" #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "clang/Frontend/ChainedDiagnosticConsumer.h" #include "clang/Frontend/FrontendAction.h" #include "clang/Frontend/FrontendActions.h" @@ -709,9 +710,7 @@ bool CompilerInstance::ExecuteAction(FrontendAction &Act) { // Validate/process some options. if (getHeaderSearchOpts().Verbose) OS << "clang -cc1 version " CLANG_VERSION_STRING -#ifdef PACKAGE_STRING - << " based upon " << PACKAGE_STRING -#endif + << " based upon " << BACKEND_PACKAGE_STRING << " default target " << llvm::sys::getDefaultTargetTriple() << "\n"; if (getFrontendOpts().ShowTimers)