|
|
@@ -19,6 +19,7 @@
|
|
|
#include "cmFileTimeComparison.h"
|
|
|
#include "cmLocalGenerator.h"
|
|
|
#include "cmMakefile.h"
|
|
|
+#include "cmMessenger.h"
|
|
|
#include "cmSourceFile.h"
|
|
|
#include "cmState.h"
|
|
|
#include "cmTest.h"
|
|
|
@@ -152,6 +153,7 @@ cmake::cmake()
|
|
|
|
|
|
this->State = new cmState;
|
|
|
this->CurrentSnapshot = this->State->CreateBaseSnapshot();
|
|
|
+ this->Messenger = new cmMessenger(this->State);
|
|
|
|
|
|
#ifdef __APPLE__
|
|
|
struct rlimit rlp;
|
|
|
@@ -207,6 +209,7 @@ cmake::cmake()
|
|
|
cmake::~cmake()
|
|
|
{
|
|
|
delete this->State;
|
|
|
+ delete this->Messenger;
|
|
|
if (this->GlobalGenerator) {
|
|
|
delete this->GlobalGenerator;
|
|
|
this->GlobalGenerator = CM_NULLPTR;
|
|
|
@@ -2281,160 +2284,10 @@ static bool cmakeCheckStampList(const char* stampList)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-cmake::MessageType cmake::ConvertMessageType(cmake::MessageType t) const
|
|
|
-{
|
|
|
- bool warningsAsErrors;
|
|
|
-
|
|
|
- if (t == cmake::AUTHOR_WARNING || t == cmake::AUTHOR_ERROR) {
|
|
|
- warningsAsErrors = this->GetDevWarningsAsErrors();
|
|
|
- if (warningsAsErrors && t == cmake::AUTHOR_WARNING) {
|
|
|
- t = cmake::AUTHOR_ERROR;
|
|
|
- } else if (!warningsAsErrors && t == cmake::AUTHOR_ERROR) {
|
|
|
- t = cmake::AUTHOR_WARNING;
|
|
|
- }
|
|
|
- } else if (t == cmake::DEPRECATION_WARNING ||
|
|
|
- t == cmake::DEPRECATION_ERROR) {
|
|
|
- warningsAsErrors = this->GetDeprecatedWarningsAsErrors();
|
|
|
- if (warningsAsErrors && t == cmake::DEPRECATION_WARNING) {
|
|
|
- t = cmake::DEPRECATION_ERROR;
|
|
|
- } else if (!warningsAsErrors && t == cmake::DEPRECATION_ERROR) {
|
|
|
- t = cmake::DEPRECATION_WARNING;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return t;
|
|
|
-}
|
|
|
-
|
|
|
-bool cmake::IsMessageTypeVisible(cmake::MessageType t) const
|
|
|
-{
|
|
|
- bool isVisible = true;
|
|
|
-
|
|
|
- if (t == cmake::DEPRECATION_ERROR) {
|
|
|
- if (!this->GetDeprecatedWarningsAsErrors()) {
|
|
|
- isVisible = false;
|
|
|
- }
|
|
|
- } else if (t == cmake::DEPRECATION_WARNING) {
|
|
|
- if (this->GetSuppressDeprecatedWarnings()) {
|
|
|
- isVisible = false;
|
|
|
- }
|
|
|
- } else if (t == cmake::AUTHOR_ERROR) {
|
|
|
- if (!this->GetDevWarningsAsErrors()) {
|
|
|
- isVisible = false;
|
|
|
- }
|
|
|
- } else if (t == cmake::AUTHOR_WARNING) {
|
|
|
- if (this->GetSuppressDevWarnings()) {
|
|
|
- isVisible = false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return isVisible;
|
|
|
-}
|
|
|
-
|
|
|
-static bool printMessagePreamble(cmake::MessageType t, std::ostream& msg)
|
|
|
-{
|
|
|
- // Construct the message header.
|
|
|
- if (t == cmake::FATAL_ERROR) {
|
|
|
- msg << "CMake Error";
|
|
|
- } else if (t == cmake::INTERNAL_ERROR) {
|
|
|
- msg << "CMake Internal Error (please report a bug)";
|
|
|
- } else if (t == cmake::LOG) {
|
|
|
- msg << "CMake Debug Log";
|
|
|
- } else if (t == cmake::DEPRECATION_ERROR) {
|
|
|
- msg << "CMake Deprecation Error";
|
|
|
- } else if (t == cmake::DEPRECATION_WARNING) {
|
|
|
- msg << "CMake Deprecation Warning";
|
|
|
- } else if (t == cmake::AUTHOR_WARNING) {
|
|
|
- msg << "CMake Warning (dev)";
|
|
|
- } else if (t == cmake::AUTHOR_ERROR) {
|
|
|
- msg << "CMake Error (dev)";
|
|
|
- } else {
|
|
|
- msg << "CMake Warning";
|
|
|
- }
|
|
|
- return true;
|
|
|
-}
|
|
|
-
|
|
|
-void printMessageText(std::ostream& msg, std::string const& text)
|
|
|
-{
|
|
|
- msg << ":\n";
|
|
|
- cmDocumentationFormatter formatter;
|
|
|
- formatter.SetIndent(" ");
|
|
|
- formatter.PrintFormatted(msg, text.c_str());
|
|
|
-}
|
|
|
-
|
|
|
-void displayMessage(cmake::MessageType t, std::ostringstream& msg)
|
|
|
-{
|
|
|
-
|
|
|
- // Add a note about warning suppression.
|
|
|
- if (t == cmake::AUTHOR_WARNING) {
|
|
|
- msg << "This warning is for project developers. Use -Wno-dev to suppress "
|
|
|
- "it.";
|
|
|
- } else if (t == cmake::AUTHOR_ERROR) {
|
|
|
- msg << "This error is for project developers. Use -Wno-error=dev to "
|
|
|
- "suppress "
|
|
|
- "it.";
|
|
|
- }
|
|
|
-
|
|
|
- // Add a terminating blank line.
|
|
|
- msg << "\n";
|
|
|
-
|
|
|
-#if defined(CMAKE_BUILD_WITH_CMAKE)
|
|
|
- // Add a C++ stack trace to internal errors.
|
|
|
- if (t == cmake::INTERNAL_ERROR) {
|
|
|
- std::string stack = cmsys::SystemInformation::GetProgramStack(0, 0);
|
|
|
- if (!stack.empty()) {
|
|
|
- if (cmHasLiteralPrefix(stack, "WARNING:")) {
|
|
|
- stack = "Note:" + stack.substr(8);
|
|
|
- }
|
|
|
- msg << stack << "\n";
|
|
|
- }
|
|
|
- }
|
|
|
-#endif
|
|
|
-
|
|
|
- // Output the message.
|
|
|
- if (t == cmake::FATAL_ERROR || t == cmake::INTERNAL_ERROR ||
|
|
|
- t == cmake::DEPRECATION_ERROR || t == cmake::AUTHOR_ERROR) {
|
|
|
- cmSystemTools::SetErrorOccured();
|
|
|
- cmSystemTools::Message(msg.str().c_str(), "Error");
|
|
|
- } else {
|
|
|
- cmSystemTools::Message(msg.str().c_str(), "Warning");
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
|
|
|
cmListFileBacktrace const& backtrace) const
|
|
|
{
|
|
|
- bool force = false;
|
|
|
- // override the message type, if needed, for warnings and errors
|
|
|
- cmake::MessageType override = this->ConvertMessageType(t);
|
|
|
- if (override != t) {
|
|
|
- t = override;
|
|
|
- force = true;
|
|
|
- }
|
|
|
-
|
|
|
- if (!force && !this->IsMessageTypeVisible(t)) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- this->DisplayMessage(t, text, backtrace);
|
|
|
-}
|
|
|
-
|
|
|
-void cmake::DisplayMessage(cmake::MessageType t, std::string const& text,
|
|
|
- cmListFileBacktrace const& backtrace) const
|
|
|
-{
|
|
|
- std::ostringstream msg;
|
|
|
- if (!printMessagePreamble(t, msg)) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Add the immediate context.
|
|
|
- backtrace.PrintTitle(msg);
|
|
|
-
|
|
|
- printMessageText(msg, text);
|
|
|
-
|
|
|
- // Add the rest of the context.
|
|
|
- backtrace.PrintCallStack(msg);
|
|
|
-
|
|
|
- displayMessage(t, msg);
|
|
|
+ this->Messenger->IssueMessage(t, text, backtrace);
|
|
|
}
|
|
|
|
|
|
std::vector<std::string> cmake::GetDebugConfigs()
|
|
|
@@ -2454,6 +2307,11 @@ std::vector<std::string> cmake::GetDebugConfigs()
|
|
|
return configs;
|
|
|
}
|
|
|
|
|
|
+cmMessenger* cmake::GetMessenger() const
|
|
|
+{
|
|
|
+ return this->Messenger;
|
|
|
+}
|
|
|
+
|
|
|
int cmake::Build(const std::string& dir, const std::string& target,
|
|
|
const std::string& config,
|
|
|
const std::vector<std::string>& nativeOptions, bool clean)
|
|
|
@@ -2560,9 +2418,7 @@ void cmake::RunCheckForUnusedVariables()
|
|
|
|
|
|
bool cmake::GetSuppressDevWarnings() const
|
|
|
{
|
|
|
- const char* cacheEntryValue =
|
|
|
- this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
|
|
|
- return cmSystemTools::IsOn(cacheEntryValue);
|
|
|
+ return this->Messenger->GetSuppressDevWarnings();
|
|
|
}
|
|
|
|
|
|
void cmake::SetSuppressDevWarnings(bool b)
|
|
|
@@ -2586,9 +2442,7 @@ void cmake::SetSuppressDevWarnings(bool b)
|
|
|
|
|
|
bool cmake::GetSuppressDeprecatedWarnings() const
|
|
|
{
|
|
|
- const char* cacheEntryValue =
|
|
|
- this->State->GetCacheEntryValue("CMAKE_WARN_DEPRECATED");
|
|
|
- return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
|
|
|
+ return this->Messenger->GetSuppressDeprecatedWarnings();
|
|
|
}
|
|
|
|
|
|
void cmake::SetSuppressDeprecatedWarnings(bool b)
|
|
|
@@ -2612,9 +2466,7 @@ void cmake::SetSuppressDeprecatedWarnings(bool b)
|
|
|
|
|
|
bool cmake::GetDevWarningsAsErrors() const
|
|
|
{
|
|
|
- const char* cacheEntryValue =
|
|
|
- this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_ERRORS");
|
|
|
- return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
|
|
|
+ return this->Messenger->GetDevWarningsAsErrors();
|
|
|
}
|
|
|
|
|
|
void cmake::SetDevWarningsAsErrors(bool b)
|
|
|
@@ -2638,9 +2490,7 @@ void cmake::SetDevWarningsAsErrors(bool b)
|
|
|
|
|
|
bool cmake::GetDeprecatedWarningsAsErrors() const
|
|
|
{
|
|
|
- const char* cacheEntryValue =
|
|
|
- this->State->GetCacheEntryValue("CMAKE_ERROR_DEPRECATED");
|
|
|
- return cmSystemTools::IsOn(cacheEntryValue);
|
|
|
+ return this->Messenger->GetDeprecatedWarningsAsErrors();
|
|
|
}
|
|
|
|
|
|
void cmake::SetDeprecatedWarningsAsErrors(bool b)
|