From fa752bf3393e583851b333cc41d2507dc217e9a8 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 22 May 2015 00:28:19 +0200 Subject: cmake: Move isError determination to a more-natural place. --- Source/cmake.cxx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index ebec923..fe727cd 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -2444,16 +2444,13 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, backtrace.MakeRelative(); std::ostringstream msg; - bool isError = false; // Construct the message header. if(t == cmake::FATAL_ERROR) { - isError = true; msg << "CMake Error"; } else if(t == cmake::INTERNAL_ERROR) { - isError = true; msg << "CMake Internal Error (please report a bug)"; } else if(t == cmake::LOG) @@ -2463,7 +2460,6 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, else if(t == cmake::DEPRECATION_ERROR) { msg << "CMake Deprecation Error"; - isError = true; } else if (t == cmake::DEPRECATION_WARNING) { @@ -2526,7 +2522,9 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, #endif // Output the message. - if(isError) + if(t == cmake::FATAL_ERROR + || t == cmake::INTERNAL_ERROR + || t == cmake::DEPRECATION_ERROR) { cmSystemTools::SetErrorOccured(); cmSystemTools::Message(msg.str().c_str(), "Error"); -- cgit v0.12 From ca7cc2ebd0bd17b70279a51a3a087b5629175f06 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 22 May 2015 00:31:52 +0200 Subject: cmake: Extract PrintMessagePreamble method. --- Source/cmake.cxx | 25 +++++++++++++++++-------- Source/cmake.h | 2 ++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index fe727cd..29f84df 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -2436,14 +2436,8 @@ static bool cmakeCheckStampList(const char* stampList) return true; } -//---------------------------------------------------------------------------- -void cmake::IssueMessage(cmake::MessageType t, std::string const& text, - cmListFileBacktrace const& bt) +bool cmake::PrintMessagePreamble(cmake::MessageType t, std::ostream& msg) { - cmListFileBacktrace backtrace = bt; - backtrace.MakeRelative(); - - std::ostringstream msg; // Construct the message header. if(t == cmake::FATAL_ERROR) { @@ -2475,11 +2469,26 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, "CMAKE_SUPPRESS_DEVELOPER_WARNINGS"); if(suppress && cmSystemTools::IsOn(suppress)) { - return; + return false; } msg << " (dev)"; } } + return true; +} + +//---------------------------------------------------------------------------- +void cmake::IssueMessage(cmake::MessageType t, std::string const& text, + cmListFileBacktrace const& bt) +{ + cmListFileBacktrace backtrace = bt; + backtrace.MakeRelative(); + + std::ostringstream msg; + if (!this->PrintMessagePreamble(t, msg)) + { + return; + } // Add the immediate context. backtrace.PrintTitle(msg); diff --git a/Source/cmake.h b/Source/cmake.h index 0a1ee7d..d83c6fc 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -399,6 +399,8 @@ private: // Print a list of valid generators to stderr. void PrintGeneratorList(); + + bool PrintMessagePreamble(cmake::MessageType t, std::ostream& msg); }; #define CMAKE_STANDARD_OPTIONS_TABLE \ -- cgit v0.12 From 55fc5e7c9ad018bbb90fbcee6ac09cf224b46246 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 22 May 2015 00:33:45 +0200 Subject: cmake: Extract printMessageText method. --- Source/cmake.cxx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 29f84df..565db8b 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -2477,6 +2477,14 @@ bool cmake::PrintMessagePreamble(cmake::MessageType t, std::ostream& msg) return true; } +void printMessageText(std::ostream& msg, std::string const& text) +{ + msg << ":\n"; + cmDocumentationFormatter formatter; + formatter.SetIndent(" "); + formatter.PrintFormatted(msg, text.c_str()); +} + //---------------------------------------------------------------------------- void cmake::IssueMessage(cmake::MessageType t, std::string const& text, cmListFileBacktrace const& bt) @@ -2493,13 +2501,7 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, // Add the immediate context. backtrace.PrintTitle(msg); - // Add the message text. - { - msg << ":\n"; - cmDocumentationFormatter formatter; - formatter.SetIndent(" "); - formatter.PrintFormatted(msg, text.c_str()); - } + printMessageText(msg, text); // Add the rest of the context. backtrace.PrintCallStack(msg); -- cgit v0.12 From 46656aa1fa69b79aa0c645a131d7abfdc34e621c Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 22 May 2015 00:35:21 +0200 Subject: cmake: Extract displayMessage method. --- Source/cmake.cxx | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 565db8b..15ea755 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -2485,26 +2485,8 @@ void printMessageText(std::ostream& msg, std::string const& text) formatter.PrintFormatted(msg, text.c_str()); } -//---------------------------------------------------------------------------- -void cmake::IssueMessage(cmake::MessageType t, std::string const& text, - cmListFileBacktrace const& bt) +void displayMessage(cmake::MessageType t, std::ostringstream& msg) { - cmListFileBacktrace backtrace = bt; - backtrace.MakeRelative(); - - std::ostringstream msg; - if (!this->PrintMessagePreamble(t, msg)) - { - return; - } - - // Add the immediate context. - backtrace.PrintTitle(msg); - - printMessageText(msg, text); - - // Add the rest of the context. - backtrace.PrintCallStack(msg); // Add a note about warning suppression. if(t == cmake::AUTHOR_WARNING) @@ -2547,6 +2529,30 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, } //---------------------------------------------------------------------------- +void cmake::IssueMessage(cmake::MessageType t, std::string const& text, + cmListFileBacktrace const& bt) +{ + cmListFileBacktrace backtrace = bt; + backtrace.MakeRelative(); + + std::ostringstream msg; + if (!this->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); +} + +//---------------------------------------------------------------------------- std::vector cmake::GetDebugConfigs() { std::vector configs; -- cgit v0.12 From 8b4b9631f5f79ffee11b33c1e8826cd4064b3a23 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 22 May 2015 00:38:03 +0200 Subject: cmake: Add IssueMessage overload taking a single cmListFileContext. Port appropriate clients to use it. --- Source/cmCommandArgumentParserHelper.cxx | 9 +++---- Source/cmMakefile.cxx | 40 ++++++++++++++------------------ Source/cmake.cxx | 18 ++++++++++++++ Source/cmake.h | 3 +++ 4 files changed, 44 insertions(+), 26 deletions(-) diff --git a/Source/cmCommandArgumentParserHelper.cxx b/Source/cmCommandArgumentParserHelper.cxx index c816c23..bd098a5 100644 --- a/Source/cmCommandArgumentParserHelper.cxx +++ b/Source/cmCommandArgumentParserHelper.cxx @@ -14,6 +14,7 @@ #include "cmSystemTools.h" #include "cmMakefile.h" #include "cmState.h" +#include "cmLocalGenerator.h" #include "cmCommandArgumentLexer.h" @@ -139,14 +140,14 @@ char* cmCommandArgumentParserHelper::ExpandVariable(const char* var) this->Makefile->GetHomeOutputDirectory())) { std::ostringstream msg; - cmListFileBacktrace bt(this->Makefile->GetLocalGenerator()); cmListFileContext lfc; - lfc.FilePath = this->FileName; + lfc.FilePath = this->Makefile->GetLocalGenerator() + ->Convert(this->FileName, cmLocalGenerator::HOME); + lfc.Line = this->FileLine; - bt.Append(lfc); msg << "uninitialized variable \'" << var << "\'"; this->Makefile->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, - msg.str(), bt); + msg.str(), lfc); } } return 0; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 2a49c8f..3e8ae85 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -249,19 +249,13 @@ void cmMakefile::IssueMessage(cmake::MessageType t, std::string const& text) const { // Collect context information. - cmLocalGenerator* localGen = this->GetLocalGenerator(); - if(this->CallStack.empty() && this->GetCMakeInstance()->GetIsInTryCompile()) - { - localGen = 0; - } - cmListFileBacktrace backtrace(localGen); if(!this->CallStack.empty()) { if((t == cmake::FATAL_ERROR) || (t == cmake::INTERNAL_ERROR)) { this->CallStack.back().Status->SetNestedError(true); } - backtrace = this->GetBacktrace(); + this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace()); } else { @@ -278,12 +272,15 @@ void cmMakefile::IssueMessage(cmake::MessageType t, // command. Add whatever context information we have. lfc.FilePath = this->ListFileStack.back(); } + if(!this->CallStack.empty() + || !this->GetCMakeInstance()->GetIsInTryCompile()) + { + lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, + cmLocalGenerator::HOME); + } lfc.Line = 0; - backtrace.Append(lfc); + this->GetCMakeInstance()->IssueMessage(t, text, lfc); } - - // Issue the message. - this->GetCMakeInstance()->IssueMessage(t, text, backtrace); } //---------------------------------------------------------------------------- @@ -1837,22 +1834,22 @@ void cmMakefile::LogUnused(const char* reason, if (this->WarnUnused) { std::string path; - cmListFileBacktrace bt(this->GetLocalGenerator()); + cmListFileContext lfc; if (!this->CallStack.empty()) { - cmListFileContext file = this->GetExecutionContext(); - bt.Append(file); - path = file.FilePath; + lfc = this->GetExecutionContext(); + path = lfc.FilePath; } else { path = this->GetCurrentSourceDirectory(); path += "/CMakeLists.txt"; - cmListFileContext lfc; lfc.FilePath = path; lfc.Line = 0; - bt.Append(lfc); } + lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, + cmLocalGenerator::HOME); + if (this->CheckSystemVars || cmSystemTools::IsSubDirectory(path, this->GetHomeDirectory()) || @@ -1865,7 +1862,7 @@ void cmMakefile::LogUnused(const char* reason, msg << "unused variable (" << reason << ") \'" << name << "\'"; this->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, msg.str(), - bt); + lfc); } } } @@ -2769,14 +2766,13 @@ cmake::MessageType cmMakefile::ExpandVariablesInStringNew( this->GetHomeOutputDirectory())) { std::ostringstream msg; - cmListFileBacktrace bt(this->GetLocalGenerator()); cmListFileContext lfc; - lfc.FilePath = filename; + lfc.FilePath = this->LocalGenerator + ->Convert(filename, cmLocalGenerator::HOME); lfc.Line = line; - bt.Append(lfc); msg << "uninitialized variable \'" << lookup << "\'"; this->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, - msg.str(), bt); + msg.str(), lfc); } } } diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 15ea755..38a67cd 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -2553,6 +2553,24 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, } //---------------------------------------------------------------------------- +void cmake::IssueMessage(cmake::MessageType t, std::string const& text, + cmListFileContext const& lfc) +{ + std::ostringstream msg; + if (!this->PrintMessagePreamble(t, msg)) + { + return; + } + + // Add the immediate context. + msg << (lfc.Line ? " at " : " in ") << lfc; + + printMessageText(msg, text); + + displayMessage(t, msg); +} + +//---------------------------------------------------------------------------- std::vector cmake::GetDebugConfigs() { std::vector configs; diff --git a/Source/cmake.h b/Source/cmake.h index d83c6fc..7f95fb6 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -303,6 +303,9 @@ class cmake /** Display a message to the user. */ void IssueMessage(cmake::MessageType t, std::string const& text, cmListFileBacktrace const& backtrace = cmListFileBacktrace(NULL)); + void IssueMessage(cmake::MessageType t, std::string const& text, + cmListFileContext const& lfc); + ///! run the --build option int Build(const std::string& dir, const std::string& target, -- cgit v0.12