summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-08-25 13:50:39 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2016-08-25 13:50:39 (GMT)
commita79abb82fe1c90b65f124a8dd31e4a0227583ce4 (patch)
tree302dc9ddff62dabbe6e142f16d58ee0a574eee5c
parentce8fadc717b001b39b3208f8069cb0048073f975 (diff)
parent1462576bcba68310395a7185e4b77da38e1e6b33 (diff)
downloadCMake-a79abb82fe1c90b65f124a8dd31e4a0227583ce4.zip
CMake-a79abb82fe1c90b65f124a8dd31e4a0227583ce4.tar.gz
CMake-a79abb82fe1c90b65f124a8dd31e4a0227583ce4.tar.bz2
Merge topic 'extract-cmMessenger'
1462576b Parser: Port away from cmMakefile 421012a3 cmMessenger: Extract from cmake class 14a8d61f cmMakefile: Port nested error logic away from cmExecutionStatus 2af853de cmMakefile: Simplify IssueMessage implementation 33bb9cfa Parser: Issue messages through cmake, not cmSystemTools db7de303 Parser: Store the Backtrace for use in issuing messages
-rw-r--r--Source/CMakeLists.txt2
-rw-r--r--Source/cmExecutionStatus.h4
-rw-r--r--Source/cmFunctionCommand.cxx6
-rw-r--r--Source/cmListFileCache.cxx89
-rw-r--r--Source/cmListFileCache.h5
-rw-r--r--Source/cmMacroCommand.cxx4
-rw-r--r--Source/cmMakefile.cxx35
-rw-r--r--Source/cmMakefile.h1
-rw-r--r--Source/cmMessageCommand.cxx6
-rw-r--r--Source/cmMessenger.cxx209
-rw-r--r--Source/cmMessenger.h44
-rw-r--r--Source/cmake.cxx176
-rw-r--r--Source/cmake.h7
-rw-r--r--Tests/RunCMake/Syntax/BracketComment4-stderr.txt11
-rw-r--r--Tests/RunCMake/Syntax/BracketNoSpace0-stderr.txt6
-rw-r--r--Tests/RunCMake/Syntax/BracketNoSpace1-stderr.txt6
-rw-r--r--Tests/RunCMake/Syntax/BracketNoSpace2-stderr.txt6
-rw-r--r--Tests/RunCMake/Syntax/BracketNoSpace3-stderr.txt6
-rw-r--r--Tests/RunCMake/Syntax/BracketNoSpace4-stderr.txt6
-rw-r--r--Tests/RunCMake/Syntax/BracketNoSpace5-stderr.txt6
-rw-r--r--Tests/RunCMake/Syntax/CommandError0-stderr.txt12
-rw-r--r--Tests/RunCMake/Syntax/CommandError1-stderr.txt11
-rw-r--r--Tests/RunCMake/Syntax/CommandError2-stderr.txt12
-rw-r--r--Tests/RunCMake/Syntax/ParenInENV-stderr.txt8
-rw-r--r--Tests/RunCMake/Syntax/ParenNoSpace1-stderr.txt18
-rw-r--r--Tests/RunCMake/Syntax/StringNoSpace-stderr.txt12
-rw-r--r--Tests/RunCMake/Syntax/UnterminatedBracket0-stderr.txt13
-rw-r--r--Tests/RunCMake/Syntax/UnterminatedBracket1-stderr.txt13
-rw-r--r--Tests/RunCMake/Syntax/UnterminatedBracketComment-stderr.txt13
-rw-r--r--Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt11
-rw-r--r--Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt11
-rw-r--r--Tests/RunCMake/Syntax/UnterminatedString-stderr.txt13
-rwxr-xr-xbootstrap1
33 files changed, 435 insertions, 348 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index e63bf5a..3b94df7 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -319,6 +319,8 @@ set(SRCS
cmMakefileExecutableTargetGenerator.cxx
cmMakefileLibraryTargetGenerator.cxx
cmMakefileUtilityTargetGenerator.cxx
+ cmMessenger.cxx
+ cmMessenger.h
cmOSXBundleGenerator.cxx
cmOSXBundleGenerator.h
cmOutputConverter.cxx
diff --git a/Source/cmExecutionStatus.h b/Source/cmExecutionStatus.h
index 508c6bd..8006514 100644
--- a/Source/cmExecutionStatus.h
+++ b/Source/cmExecutionStatus.h
@@ -38,16 +38,12 @@ public:
this->ReturnInvoked = false;
this->BreakInvoked = false;
this->ContinueInvoked = false;
- this->NestedError = false;
}
- void SetNestedError(bool val) { this->NestedError = val; }
- bool GetNestedError() { return this->NestedError; }
private:
bool ReturnInvoked;
bool BreakInvoked;
bool ContinueInvoked;
- bool NestedError;
};
#endif
diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx
index 40c54db..f0e4854 100644
--- a/Source/cmFunctionCommand.cxx
+++ b/Source/cmFunctionCommand.cxx
@@ -76,7 +76,7 @@ public:
};
bool cmFunctionHelperCommand::InvokeInitialPass(
- const std::vector<cmListFileArgument>& args, cmExecutionStatus& inStatus)
+ const std::vector<cmListFileArgument>& args, cmExecutionStatus&)
{
// Expand the argument list to the function.
std::vector<std::string> expandedArgs;
@@ -129,11 +129,11 @@ bool cmFunctionHelperCommand::InvokeInitialPass(
for (unsigned int c = 0; c < this->Functions.size(); ++c) {
cmExecutionStatus status;
if (!this->Makefile->ExecuteCommand(this->Functions[c], status) ||
- status.GetNestedError()) {
+ (cmSystemTools::GetErrorOccuredFlag() &&
+ !cmSystemTools::GetFatalErrorOccured())) {
// The error message should have already included the call stack
// so we do not need to report an error here.
functionScope.Quiet();
- inStatus.SetNestedError(true);
return false;
}
if (status.GetReturnInvoked()) {
diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx
index 1967d2a..39d9e97 100644
--- a/Source/cmListFileCache.cxx
+++ b/Source/cmListFileCache.cxx
@@ -12,7 +12,7 @@
#include "cmListFileCache.h"
#include "cmListFileLexer.h"
-#include "cmMakefile.h"
+#include "cmMessenger.h"
#include "cmOutputConverter.h"
#include "cmSystemTools.h"
#include "cmVersion.h"
@@ -21,15 +21,18 @@
struct cmListFileParser
{
- cmListFileParser(cmListFile* lf, cmMakefile* mf, const char* filename);
+ cmListFileParser(cmListFile* lf, cmListFileBacktrace lfbt,
+ cmMessenger* messenger, const char* filename);
~cmListFileParser();
void IssueFileOpenError(std::string const& text) const;
+ void IssueError(std::string const& text) const;
bool ParseFile();
bool ParseFunction(const char* name, long line);
bool AddArgument(cmListFileLexer_Token* token,
cmListFileArgument::Delimiter delim);
cmListFile* ListFile;
- cmMakefile* Makefile;
+ cmListFileBacktrace Backtrace;
+ cmMessenger* Messenger;
const char* FileName;
cmListFileLexer* Lexer;
cmListFileFunction Function;
@@ -41,10 +44,12 @@ struct cmListFileParser
} Separation;
};
-cmListFileParser::cmListFileParser(cmListFile* lf, cmMakefile* mf,
+cmListFileParser::cmListFileParser(cmListFile* lf, cmListFileBacktrace lfbt,
+ cmMessenger* messenger,
const char* filename)
: ListFile(lf)
- , Makefile(mf)
+ , Backtrace(lfbt)
+ , Messenger(messenger)
, FileName(filename)
, Lexer(cmListFileLexer_New())
{
@@ -57,7 +62,18 @@ cmListFileParser::~cmListFileParser()
void cmListFileParser::IssueFileOpenError(const std::string& text) const
{
- this->Makefile->IssueMessage(cmake::FATAL_ERROR, text);
+ this->Messenger->IssueMessage(cmake::FATAL_ERROR, text, this->Backtrace);
+}
+
+void cmListFileParser::IssueError(const std::string& text) const
+{
+ cmListFileContext lfc;
+ lfc.FilePath = this->FileName;
+ lfc.Line = cmListFileLexer_GetCurrentLine(this->Lexer);
+ cmListFileBacktrace lfbt = this->Backtrace;
+ lfbt = lfbt.Push(lfc);
+ this->Messenger->IssueMessage(cmake::FATAL_ERROR, text, lfbt);
+ cmSystemTools::SetFatalErrorOccured();
}
bool cmListFileParser::ParseFile()
@@ -96,29 +112,26 @@ bool cmListFileParser::ParseFile()
}
} else {
std::ostringstream error;
- error << "Error in cmake code at\n"
- << this->FileName << ":" << token->line << ":\n"
- << "Parse error. Expected a newline, got "
+ error << "Parse error. Expected a newline, got "
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
<< " with text \"" << token->text << "\".";
- cmSystemTools::Error(error.str().c_str());
+ this->IssueError(error.str());
return false;
}
} else {
std::ostringstream error;
- error << "Error in cmake code at\n"
- << this->FileName << ":" << token->line << ":\n"
- << "Parse error. Expected a command name, got "
+ error << "Parse error. Expected a command name, got "
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
<< " with text \"" << token->text << "\".";
- cmSystemTools::Error(error.str().c_str());
+ this->IssueError(error.str());
return false;
}
}
return true;
}
-bool cmListFile::ParseFile(const char* filename, cmMakefile* mf)
+bool cmListFile::ParseFile(const char* filename, cmMessenger* messenger,
+ cmListFileBacktrace const& lfbt)
{
if (!cmSystemTools::FileExists(filename) ||
cmSystemTools::FileIsDirectory(filename)) {
@@ -128,7 +141,7 @@ bool cmListFile::ParseFile(const char* filename, cmMakefile* mf)
bool parseError = false;
{
- cmListFileParser parser(this, mf, filename);
+ cmListFileParser parser(this, lfbt, messenger, filename);
parseError = !parser.ParseFile();
}
@@ -154,18 +167,15 @@ bool cmListFileParser::ParseFunction(const char* name, long line)
<< cmListFileLexer_GetCurrentLine(this->Lexer) << ":\n"
<< "Parse error. Function missing opening \"(\".";
/* clang-format on */
- cmSystemTools::Error(error.str().c_str());
+ this->IssueError(error.str());
return false;
}
if (token->type != cmListFileLexer_Token_ParenLeft) {
std::ostringstream error;
- error << "Error in cmake code at\n"
- << this->FileName << ":"
- << cmListFileLexer_GetCurrentLine(this->Lexer) << ":\n"
- << "Parse error. Expected \"(\", got "
+ error << "Parse error. Expected \"(\", got "
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
<< " with text \"" << token->text << "\".";
- cmSystemTools::Error(error.str().c_str());
+ this->IssueError(error.str());
return false;
}
@@ -217,25 +227,24 @@ bool cmListFileParser::ParseFunction(const char* name, long line)
} else {
// Error.
std::ostringstream error;
- error << "Error in cmake code at\n"
- << this->FileName << ":"
- << cmListFileLexer_GetCurrentLine(this->Lexer) << ":\n"
- << "Parse error. Function missing ending \")\". "
+ error << "Parse error. Function missing ending \")\". "
<< "Instead found "
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
<< " with text \"" << token->text << "\".";
- cmSystemTools::Error(error.str().c_str());
+ this->IssueError(error.str());
return false;
}
}
std::ostringstream error;
- error << "Error in cmake code at\n"
- << this->FileName << ":" << lastLine << ":\n"
- << "Parse error. Function missing ending \")\". "
+ cmListFileContext lfc;
+ lfc.FilePath = this->FileName;
+ lfc.Line = lastLine;
+ cmListFileBacktrace lfbt = this->Backtrace;
+ lfbt = lfbt.Push(lfc);
+ error << "Parse error. Function missing ending \")\". "
<< "End of file reached.";
- cmSystemTools::Error(error.str().c_str());
-
+ this->Messenger->IssueMessage(cmake::FATAL_ERROR, error.str(), lfbt);
return false;
}
@@ -250,17 +259,21 @@ bool cmListFileParser::AddArgument(cmListFileLexer_Token* token,
bool isError = (this->Separation == SeparationError ||
delim == cmListFileArgument::Bracket);
std::ostringstream m;
- /* clang-format off */
- m << "Syntax " << (isError? "Error":"Warning") << " in cmake code at\n"
- << " " << this->FileName << ":" << token->line << ":"
- << token->column << "\n"
+ cmListFileContext lfc;
+ lfc.FilePath = this->FileName;
+ lfc.Line = token->line;
+ cmListFileBacktrace lfbt = this->Backtrace;
+ lfbt = lfbt.Push(lfc);
+
+ m << "Syntax " << (isError ? "Error" : "Warning") << " in cmake code at "
+ << "column " << token->column << "\n"
<< "Argument not separated from preceding token by whitespace.";
/* clang-format on */
if (isError) {
- this->Makefile->IssueMessage(cmake::FATAL_ERROR, m.str());
+ this->Messenger->IssueMessage(cmake::FATAL_ERROR, m.str(), lfbt);
return false;
}
- this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, m.str());
+ this->Messenger->IssueMessage(cmake::AUTHOR_WARNING, m.str(), lfbt);
return true;
}
diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h
index f3e6f70..cd44536 100644
--- a/Source/cmListFileCache.h
+++ b/Source/cmListFileCache.h
@@ -23,7 +23,7 @@
* cmake list files.
*/
-class cmMakefile;
+class cmMessenger;
struct cmCommandContext
{
@@ -158,7 +158,8 @@ private:
struct cmListFile
{
- bool ParseFile(const char* path, cmMakefile* mf);
+ bool ParseFile(const char* path, cmMessenger* messenger,
+ cmListFileBacktrace const& lfbt);
std::vector<cmListFileFunction> Functions;
};
diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx
index ee9dc8a..9d312ee 100644
--- a/Source/cmMacroCommand.cxx
+++ b/Source/cmMacroCommand.cxx
@@ -159,11 +159,11 @@ bool cmMacroHelperCommand::InvokeInitialPass(
}
cmExecutionStatus status;
if (!this->Makefile->ExecuteCommand(newLFF, status) ||
- status.GetNestedError()) {
+ (cmSystemTools::GetErrorOccuredFlag() &&
+ !cmSystemTools::GetFatalErrorOccured())) {
// The error message should have already included the call stack
// so we do not need to report an error here.
macroScope.Quiet();
- inStatus.SetNestedError(true);
return false;
}
if (status.GetReturnInvoked()) {
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index b9d71ec..6e47797 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -25,6 +25,7 @@
#include "cmGlobalGenerator.h"
#include "cmInstallGenerator.h"
#include "cmListFileCache.h"
+#include "cmMessenger.h"
#include "cmSourceFile.h"
#include "cmSourceFileLocation.h"
#include "cmState.h"
@@ -115,12 +116,6 @@ cmMakefile::~cmMakefile()
void cmMakefile::IssueMessage(cmake::MessageType t,
std::string const& text) const
{
- // Collect context information.
- if (!this->ExecutionStatusStack.empty()) {
- if ((t == cmake::FATAL_ERROR) || (t == cmake::INTERNAL_ERROR)) {
- this->ExecutionStatusStack.back()->SetNestedError(true);
- }
- }
this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace());
}
@@ -281,11 +276,19 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff,
if (this->GetCMakeInstance()->GetTrace()) {
this->PrintCommandTrace(lff);
}
- // Try invoking the command.
+
+ bool hadPreviousNonFatalError = cmSystemTools::GetErrorOccuredFlag() &&
+ !cmSystemTools::GetFatalErrorOccured();
+ cmSystemTools::ResetErrorOccuredFlag();
+
bool invokeSucceeded = pcmd->InvokeInitialPass(lff.Arguments, status);
- bool hadNestedError = status.GetNestedError();
+ bool hadNestedError = cmSystemTools::GetErrorOccuredFlag() &&
+ !cmSystemTools::GetFatalErrorOccured();
+ if (hadPreviousNonFatalError) {
+ cmSystemTools::SetErrorOccured();
+ }
if (!invokeSucceeded || hadNestedError) {
- if (!hadNestedError) {
+ if (!hadNestedError && !cmSystemTools::GetFatalErrorOccured()) {
// The command invocation requested that we report an error.
this->IssueMessage(cmake::FATAL_ERROR, pcmd->GetError());
}
@@ -455,7 +458,8 @@ bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope)
IncludeScope incScope(this, filenametoread, noPolicyScope);
cmListFile listFile;
- if (!listFile.ParseFile(filenametoread.c_str(), this)) {
+ if (!listFile.ParseFile(filenametoread.c_str(), this->GetMessenger(),
+ this->Backtrace)) {
return false;
}
@@ -504,7 +508,8 @@ bool cmMakefile::ReadListFile(const char* filename)
ListFileScope scope(this, filenametoread);
cmListFile listFile;
- if (!listFile.ParseFile(filenametoread.c_str(), this)) {
+ if (!listFile.ParseFile(filenametoread.c_str(), this->GetMessenger(),
+ this->Backtrace)) {
return false;
}
@@ -1450,7 +1455,8 @@ void cmMakefile::Configure()
this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentStart.c_str());
cmListFile listFile;
- if (!listFile.ParseFile(currentStart.c_str(), this)) {
+ if (!listFile.ParseFile(currentStart.c_str(), this->GetMessenger(),
+ this->Backtrace)) {
return;
}
if (this->IsRootMakefile()) {
@@ -3272,6 +3278,11 @@ cmake* cmMakefile::GetCMakeInstance() const
return this->GlobalGenerator->GetCMakeInstance();
}
+cmMessenger* cmMakefile::GetMessenger() const
+{
+ return this->GetCMakeInstance()->GetMessenger();
+}
+
cmGlobalGenerator* cmMakefile::GetGlobalGenerator() const
{
return this->GlobalGenerator;
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index d082964..b3587c5 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -607,6 +607,7 @@ public:
* Get the instance
*/
cmake* GetCMakeInstance() const;
+ cmMessenger* GetMessenger() const;
cmGlobalGenerator* GetGlobalGenerator() const;
/**
diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx
index 080880b..c48910e 100644
--- a/Source/cmMessageCommand.cxx
+++ b/Source/cmMessageCommand.cxx
@@ -11,6 +11,8 @@
============================================================================*/
#include "cmMessageCommand.h"
+#include "cmMessenger.h"
+
// cmLibraryCommand
bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
cmExecutionStatus&)
@@ -65,8 +67,8 @@ bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
if (type != cmake::MESSAGE) {
// we've overriden the message type, above, so display it directly
- cmake* cm = this->Makefile->GetCMakeInstance();
- cm->DisplayMessage(type, message, this->Makefile->GetBacktrace());
+ cmMessenger* m = this->Makefile->GetMessenger();
+ m->DisplayMessage(type, message, this->Makefile->GetBacktrace());
} else {
if (status) {
this->Makefile->DisplayStatus(message.c_str(), -1);
diff --git a/Source/cmMessenger.cxx b/Source/cmMessenger.cxx
new file mode 100644
index 0000000..43fa150
--- /dev/null
+++ b/Source/cmMessenger.cxx
@@ -0,0 +1,209 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+
+#include "cmMessenger.h"
+#include "cmDocumentationFormatter.h"
+#include "cmMessenger.h"
+#include "cmOutputConverter.h"
+
+#if defined(CMAKE_BUILD_WITH_CMAKE)
+#include <cmsys/SystemInformation.hxx>
+#endif
+
+cmake::MessageType cmMessenger::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 cmMessenger::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");
+ }
+}
+
+cmMessenger::cmMessenger(cmState* state)
+ : State(state)
+{
+}
+
+void cmMessenger::IssueMessage(cmake::MessageType t, const std::string& text,
+ const cmListFileBacktrace& backtrace) const
+{
+ bool force = false;
+ if (!force) {
+ // 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 cmMessenger::DisplayMessage(cmake::MessageType t, const std::string& text,
+ const cmListFileBacktrace& 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);
+}
+
+bool cmMessenger::GetSuppressDevWarnings() const
+{
+ const char* cacheEntryValue =
+ this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
+ return cmSystemTools::IsOn(cacheEntryValue);
+}
+
+bool cmMessenger::GetSuppressDeprecatedWarnings() const
+{
+ const char* cacheEntryValue =
+ this->State->GetCacheEntryValue("CMAKE_WARN_DEPRECATED");
+ return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
+}
+
+bool cmMessenger::GetDevWarningsAsErrors() const
+{
+ const char* cacheEntryValue =
+ this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_ERRORS");
+ return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
+}
+
+bool cmMessenger::GetDeprecatedWarningsAsErrors() const
+{
+ const char* cacheEntryValue =
+ this->State->GetCacheEntryValue("CMAKE_ERROR_DEPRECATED");
+ return cmSystemTools::IsOn(cacheEntryValue);
+}
diff --git a/Source/cmMessenger.h b/Source/cmMessenger.h
new file mode 100644
index 0000000..f15bf13
--- /dev/null
+++ b/Source/cmMessenger.h
@@ -0,0 +1,44 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+
+#ifndef cmMessenger_h
+#define cmMessenger_h
+
+#include "cmListFileCache.h"
+#include "cmState.h"
+#include "cmake.h"
+
+class cmMessenger
+{
+public:
+ cmMessenger(cmState* state);
+
+ void IssueMessage(
+ cmake::MessageType t, std::string const& text,
+ cmListFileBacktrace const& backtrace = cmListFileBacktrace()) const;
+
+ void DisplayMessage(cmake::MessageType t, std::string const& text,
+ cmListFileBacktrace const& backtrace) const;
+
+ bool GetSuppressDevWarnings() const;
+ bool GetSuppressDeprecatedWarnings() const;
+ bool GetDevWarningsAsErrors() const;
+ bool GetDeprecatedWarningsAsErrors() const;
+
+private:
+ bool IsMessageTypeVisible(cmake::MessageType t) const;
+ cmake::MessageType ConvertMessageType(cmake::MessageType t) const;
+
+ cmState* State;
+};
+
+#endif
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 74c3f71..701a5e5 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -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)
diff --git a/Source/cmake.h b/Source/cmake.h
index 343d371..dbe936b 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -25,6 +25,7 @@ class cmGlobalGeneratorFactory;
class cmGlobalGenerator;
class cmLocalGenerator;
class cmMakefile;
+class cmMessenger;
class cmVariableWatch;
class cmFileTimeComparison;
class cmExternalMakefileProjectGeneratorFactory;
@@ -346,6 +347,8 @@ public:
return this->CMakeEditCommand;
}
+ cmMessenger* GetMessenger() const;
+
/*
* Get the state of the suppression of developer (author) warnings.
* Returns false, by default, if developer warnings should be shown, true
@@ -395,9 +398,6 @@ public:
cmake::MessageType t, std::string const& text,
cmListFileBacktrace const& backtrace = cmListFileBacktrace()) const;
- void DisplayMessage(cmake::MessageType t, std::string const& text,
- cmListFileBacktrace const& backtrace) const;
-
///! run the --build option
int Build(const std::string& dir, const std::string& target,
const std::string& config,
@@ -491,6 +491,7 @@ private:
cmState* State;
cmState::Snapshot CurrentSnapshot;
+ cmMessenger* Messenger;
std::vector<std::string> TraceOnlyThisSources;
diff --git a/Tests/RunCMake/Syntax/BracketComment4-stderr.txt b/Tests/RunCMake/Syntax/BracketComment4-stderr.txt
index 8ba32c2..6bbb980 100644
--- a/Tests/RunCMake/Syntax/BracketComment4-stderr.txt
+++ b/Tests/RunCMake/Syntax/BracketComment4-stderr.txt
@@ -1,7 +1,4 @@
-CMake Error: Error in cmake code at
-.*/Tests/RunCMake/Syntax/BracketComment4.cmake:3:
-Parse error. Expected a newline, got identifier with text "message".
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
-
- BracketComment4.cmake
+CMake Error at BracketComment4.cmake:3:
+ Parse error. Expected a newline, got identifier with text "message".
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/BracketNoSpace0-stderr.txt b/Tests/RunCMake/Syntax/BracketNoSpace0-stderr.txt
index a288280..0a52022 100644
--- a/Tests/RunCMake/Syntax/BracketNoSpace0-stderr.txt
+++ b/Tests/RunCMake/Syntax/BracketNoSpace0-stderr.txt
@@ -1,7 +1,5 @@
-CMake Error in BracketNoSpace0.cmake:
- Syntax Error in cmake code at
-
- .*/Tests/RunCMake/Syntax/BracketNoSpace0.cmake:1:27
+CMake Error at BracketNoSpace0.cmake:1:
+ Syntax Error in cmake code at column 27
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
diff --git a/Tests/RunCMake/Syntax/BracketNoSpace1-stderr.txt b/Tests/RunCMake/Syntax/BracketNoSpace1-stderr.txt
index 391e11b..43bf995 100644
--- a/Tests/RunCMake/Syntax/BracketNoSpace1-stderr.txt
+++ b/Tests/RunCMake/Syntax/BracketNoSpace1-stderr.txt
@@ -1,7 +1,5 @@
-CMake Error in BracketNoSpace1.cmake:
- Syntax Error in cmake code at
-
- .*/Tests/RunCMake/Syntax/BracketNoSpace1.cmake:1:24
+CMake Error at BracketNoSpace1.cmake:1:
+ Syntax Error in cmake code at column 24
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
diff --git a/Tests/RunCMake/Syntax/BracketNoSpace2-stderr.txt b/Tests/RunCMake/Syntax/BracketNoSpace2-stderr.txt
index acaf7fe..f78b4bd 100644
--- a/Tests/RunCMake/Syntax/BracketNoSpace2-stderr.txt
+++ b/Tests/RunCMake/Syntax/BracketNoSpace2-stderr.txt
@@ -1,7 +1,5 @@
-CMake Error in BracketNoSpace2.cmake:
- Syntax Error in cmake code at
-
- .*/Tests/RunCMake/Syntax/BracketNoSpace2.cmake:1:44
+CMake Error at BracketNoSpace2.cmake:1:
+ Syntax Error in cmake code at column 44
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
diff --git a/Tests/RunCMake/Syntax/BracketNoSpace3-stderr.txt b/Tests/RunCMake/Syntax/BracketNoSpace3-stderr.txt
index f12b2e5..63ca600 100644
--- a/Tests/RunCMake/Syntax/BracketNoSpace3-stderr.txt
+++ b/Tests/RunCMake/Syntax/BracketNoSpace3-stderr.txt
@@ -1,7 +1,5 @@
-CMake Error in BracketNoSpace3.cmake:
- Syntax Error in cmake code at
-
- .*/Tests/RunCMake/Syntax/BracketNoSpace3.cmake:1:45
+CMake Error at BracketNoSpace3.cmake:1:
+ Syntax Error in cmake code at column 45
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
diff --git a/Tests/RunCMake/Syntax/BracketNoSpace4-stderr.txt b/Tests/RunCMake/Syntax/BracketNoSpace4-stderr.txt
index 7157763..318b0e3 100644
--- a/Tests/RunCMake/Syntax/BracketNoSpace4-stderr.txt
+++ b/Tests/RunCMake/Syntax/BracketNoSpace4-stderr.txt
@@ -1,7 +1,5 @@
-CMake Error in BracketNoSpace4.cmake:
- Syntax Error in cmake code at
-
- .*/Tests/RunCMake/Syntax/BracketNoSpace4.cmake:1:44
+CMake Error at BracketNoSpace4.cmake:1:
+ Syntax Error in cmake code at column 44
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
diff --git a/Tests/RunCMake/Syntax/BracketNoSpace5-stderr.txt b/Tests/RunCMake/Syntax/BracketNoSpace5-stderr.txt
index c13969d..a68478a 100644
--- a/Tests/RunCMake/Syntax/BracketNoSpace5-stderr.txt
+++ b/Tests/RunCMake/Syntax/BracketNoSpace5-stderr.txt
@@ -1,7 +1,5 @@
-CMake Error in BracketNoSpace5.cmake:
- Syntax Error in cmake code at
-
- .*/Tests/RunCMake/Syntax/BracketNoSpace5.cmake:1:45
+CMake Error at BracketNoSpace5.cmake:1:
+ Syntax Error in cmake code at column 45
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
diff --git a/Tests/RunCMake/Syntax/CommandError0-stderr.txt b/Tests/RunCMake/Syntax/CommandError0-stderr.txt
index 24d7997..e584fb0 100644
--- a/Tests/RunCMake/Syntax/CommandError0-stderr.txt
+++ b/Tests/RunCMake/Syntax/CommandError0-stderr.txt
@@ -1,8 +1,6 @@
-CMake Error: Error in cmake code at
-.*/Tests/RunCMake/Syntax/CommandError0.cmake:2:
-Parse error. Expected "\(", got newline with text "
-".
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
+CMake Error at CommandError0.cmake:2:
+ Parse error. Expected "\(", got newline with text "
- CommandError0.cmake
+ ".
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/CommandError1-stderr.txt b/Tests/RunCMake/Syntax/CommandError1-stderr.txt
index 599f600..c3bf93c 100644
--- a/Tests/RunCMake/Syntax/CommandError1-stderr.txt
+++ b/Tests/RunCMake/Syntax/CommandError1-stderr.txt
@@ -1,7 +1,4 @@
-CMake Error: Error in cmake code at
-.*/Tests/RunCMake/Syntax/CommandError1.cmake:1:
-Parse error. Expected a newline, got identifier with text "message".
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
-
- CommandError1.cmake
+CMake Error at CommandError1.cmake:1:
+ Parse error. Expected a newline, got identifier with text "message".
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/CommandError2-stderr.txt b/Tests/RunCMake/Syntax/CommandError2-stderr.txt
index f4dfc77..4fe28a9 100644
--- a/Tests/RunCMake/Syntax/CommandError2-stderr.txt
+++ b/Tests/RunCMake/Syntax/CommandError2-stderr.txt
@@ -1,7 +1,5 @@
-CMake Error: Error in cmake code at
-.*/Tests/RunCMake/Syntax/CommandError2.cmake:1:
-Parse error. Expected a command name, got bracket argument with text "oops-not-a-comment".
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
-
- CommandError2.cmake
+CMake Error at CommandError2.cmake:1:
+ Parse error. Expected a command name, got bracket argument with text
+ "oops-not-a-comment".
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/ParenInENV-stderr.txt b/Tests/RunCMake/Syntax/ParenInENV-stderr.txt
index 37c5d6e..d7861e2 100644
--- a/Tests/RunCMake/Syntax/ParenInENV-stderr.txt
+++ b/Tests/RunCMake/Syntax/ParenInENV-stderr.txt
@@ -1,7 +1,5 @@
-CMake Warning \(dev\) in ParenInENV.cmake:
- Syntax Warning in cmake code at
-
- .*/Tests/RunCMake/Syntax/ParenInENV.cmake:2:21
+CMake Warning \(dev\) at ParenInENV.cmake:2:
+ Syntax Warning in cmake code at column 21
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
@@ -11,7 +9,7 @@ This warning is for project developers. Use -Wno-dev to suppress it.
CMake Error at ParenInENV.cmake:2 \(message\):
Syntax error in cmake code at
- .*/Tests/RunCMake/Syntax/ParenInENV.cmake:2
+ .*Tests/RunCMake/Syntax/ParenInENV.cmake:2
when parsing string
diff --git a/Tests/RunCMake/Syntax/ParenNoSpace1-stderr.txt b/Tests/RunCMake/Syntax/ParenNoSpace1-stderr.txt
index 45b2e6a..7958249 100644
--- a/Tests/RunCMake/Syntax/ParenNoSpace1-stderr.txt
+++ b/Tests/RunCMake/Syntax/ParenNoSpace1-stderr.txt
@@ -1,27 +1,21 @@
-CMake Warning \(dev\) in ParenNoSpace1.cmake:
- Syntax Warning in cmake code at
-
- .*/Tests/RunCMake/Syntax/ParenNoSpace1.cmake:1:26
+CMake Warning \(dev\) at ParenNoSpace1.cmake:1:
+ Syntax Warning in cmake code at column 26
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
-CMake Warning \(dev\) in ParenNoSpace1.cmake:
- Syntax Warning in cmake code at
-
- .*/Tests/RunCMake/Syntax/ParenNoSpace1.cmake:2:26
+CMake Warning \(dev\) at ParenNoSpace1.cmake:2:
+ Syntax Warning in cmake code at column 26
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
-CMake Error in ParenNoSpace1.cmake:
- Syntax Error in cmake code at
-
- .*/Tests/RunCMake/Syntax/ParenNoSpace1.cmake:3:29
+CMake Error at ParenNoSpace1.cmake:3:
+ Syntax Error in cmake code at column 29
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
diff --git a/Tests/RunCMake/Syntax/StringNoSpace-stderr.txt b/Tests/RunCMake/Syntax/StringNoSpace-stderr.txt
index a4ec6e7..817fcfa 100644
--- a/Tests/RunCMake/Syntax/StringNoSpace-stderr.txt
+++ b/Tests/RunCMake/Syntax/StringNoSpace-stderr.txt
@@ -1,17 +1,13 @@
-CMake Warning \(dev\) in StringNoSpace.cmake:
- Syntax Warning in cmake code at
-
- .*/Tests/RunCMake/Syntax/StringNoSpace.cmake:2:28
+CMake Warning \(dev\) at StringNoSpace.cmake:2:
+ Syntax Warning in cmake code at column 28
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
-CMake Warning \(dev\) in StringNoSpace.cmake:
- Syntax Warning in cmake code at
-
- .*/Tests/RunCMake/Syntax/StringNoSpace.cmake:2:31
+CMake Warning \(dev\) at StringNoSpace.cmake:2:
+ Syntax Warning in cmake code at column 31
Argument not separated from preceding token by whitespace.
Call Stack \(most recent call first\):
diff --git a/Tests/RunCMake/Syntax/UnterminatedBracket0-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedBracket0-stderr.txt
index 3559c18..de33f7d 100644
--- a/Tests/RunCMake/Syntax/UnterminatedBracket0-stderr.txt
+++ b/Tests/RunCMake/Syntax/UnterminatedBracket0-stderr.txt
@@ -1,8 +1,7 @@
-CMake Error: Error in cmake code at
-.*/Syntax/UnterminatedBracket0.cmake:2:
-Parse error. Function missing ending "\)". Instead found unterminated bracket with text "\)
-".
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
+CMake Error at UnterminatedBracket0.cmake:2:
+ Parse error. Function missing ending "\)". Instead found unterminated
+ bracket with text "\)
- UnterminatedBracket0.cmake$
+ ".
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/UnterminatedBracket1-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedBracket1-stderr.txt
index 55d458b..86bfa2a 100644
--- a/Tests/RunCMake/Syntax/UnterminatedBracket1-stderr.txt
+++ b/Tests/RunCMake/Syntax/UnterminatedBracket1-stderr.txt
@@ -1,8 +1,7 @@
-CMake Error: Error in cmake code at
-.*/Syntax/UnterminatedBracket1.cmake:2:
-Parse error. Function missing ending "\)". Instead found unterminated bracket with text "\]\]\)
-".
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
+CMake Error at UnterminatedBracket1.cmake:2:
+ Parse error. Function missing ending "\)". Instead found unterminated
+ bracket with text "]]\)
- UnterminatedBracket1.cmake$
+ ".
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/UnterminatedBracketComment-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedBracketComment-stderr.txt
index 0a799eb..4ec78a1 100644
--- a/Tests/RunCMake/Syntax/UnterminatedBracketComment-stderr.txt
+++ b/Tests/RunCMake/Syntax/UnterminatedBracketComment-stderr.txt
@@ -1,8 +1,7 @@
-CMake Error: Error in cmake code at
-.*/Syntax/UnterminatedBracketComment.cmake:1:
-Parse error. Expected a command name, got unterminated bracket with text "#\]\]
-".
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
+CMake Error at UnterminatedBracketComment.cmake:3:
+ Parse error. Expected a command name, got unterminated bracket with text
+ "#]]
- UnterminatedBracketComment.cmake
+ ".
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt
index 281ce0d..3f52244 100644
--- a/Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt
+++ b/Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt
@@ -1,7 +1,4 @@
-CMake Error: Error in cmake code at
-.*/Syntax/UnterminatedCall1.cmake:2:
-Parse error. Function missing ending "\)". End of file reached.
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
-
- UnterminatedCall1.cmake
+CMake Error at UnterminatedCall1.cmake:2:
+ Parse error. Function missing ending "\)". End of file reached.
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt
index 065de30..18656f7 100644
--- a/Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt
+++ b/Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt
@@ -1,7 +1,4 @@
-CMake Error: Error in cmake code at
-.*/Syntax/UnterminatedCall2.cmake:4:
-Parse error. Function missing ending "\)". End of file reached.
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
-
- UnterminatedCall2.cmake
+CMake Error at UnterminatedCall2.cmake:4:
+ Parse error. Function missing ending "\)". End of file reached.
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/UnterminatedString-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedString-stderr.txt
index d925032..79c3fd2 100644
--- a/Tests/RunCMake/Syntax/UnterminatedString-stderr.txt
+++ b/Tests/RunCMake/Syntax/UnterminatedString-stderr.txt
@@ -1,8 +1,7 @@
-CMake Error: Error in cmake code at
-.*/Syntax/UnterminatedString.cmake:2:
-Parse error. Function missing ending "\)". Instead found unterminated string with text "\)
-".
-CMake Error at CMakeLists.txt:3 \(include\):
- include could not find load file:
+CMake Error at UnterminatedString.cmake:2:
+ Parse error. Function missing ending "\)". Instead found unterminated
+ string with text "\)
- UnterminatedString.cmake$
+ ".
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/bootstrap b/bootstrap
index 742fa2b..6c6713e 100755
--- a/bootstrap
+++ b/bootstrap
@@ -266,6 +266,7 @@ CMAKE_CXX_SOURCES="\
cmPropertyDefinition \
cmPropertyDefinitionMap \
cmMakefile \
+ cmMessenger \
cmExportBuildFileGenerator \
cmExportFileGenerator \
cmExportInstallFileGenerator \