summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/cmMessageCommand.cxx17
-rw-r--r--Source/cmMessageCommand.h8
-rw-r--r--Source/cmake.cxx9
-rw-r--r--Source/cmake.h4
-rw-r--r--Tests/RunCMake/CMakeLists.txt1
-rw-r--r--Tests/RunCMake/message/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/message/RunCMakeTest.cmake5
-rw-r--r--Tests/RunCMake/message/errormessage-result.txt1
-rw-r--r--Tests/RunCMake/message/errormessage-stderr.txt4
-rw-r--r--Tests/RunCMake/message/errormessage.cmake4
-rw-r--r--Tests/RunCMake/message/nomessage-result.txt1
-rw-r--r--Tests/RunCMake/message/nomessage-stderr.txt1
-rw-r--r--Tests/RunCMake/message/nomessage.cmake2
-rw-r--r--Tests/RunCMake/message/warnmessage-result.txt1
-rw-r--r--Tests/RunCMake/message/warnmessage-stderr.txt4
-rw-r--r--Tests/RunCMake/message/warnmessage.cmake4
16 files changed, 65 insertions, 4 deletions
diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx
index e1dbf349d1..d85e720b67 100644
--- a/Source/cmMessageCommand.cxx
+++ b/Source/cmMessageCommand.cxx
@@ -52,6 +52,23 @@ bool cmMessageCommand
status = true;
++i;
}
+ else if (*i == "DEPRECATION")
+ {
+ if (this->Makefile->IsOn("CMAKE_ERROR_DEPRECATED"))
+ {
+ fatal = true;
+ type = cmake::DEPRECATION_ERROR;
+ }
+ else if (this->Makefile->IsOn("CMAKE_WARN_DEPRECATED"))
+ {
+ type = cmake::DEPRECATION_WARNING;
+ }
+ else
+ {
+ return true;
+ }
+ ++i;
+ }
for(;i != args.end(); ++i)
{
diff --git a/Source/cmMessageCommand.h b/Source/cmMessageCommand.h
index fc61810c34..a053bdd790 100644
--- a/Source/cmMessageCommand.h
+++ b/Source/cmMessageCommand.h
@@ -60,9 +60,8 @@ public:
virtual const char* GetFullDocumentation() const
{
return
- " message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR]\n"
- " \"message to display\" ...)\n"
- "The optional keyword determines the type of message:\n"
+ " message([<mode>] \"message to display\" ...)\n"
+ "The optional <mode> keyword determines the type of message:\n"
" (none) = Important information\n"
" STATUS = Incidental information\n"
" WARNING = CMake Warning, continue processing\n"
@@ -70,6 +69,9 @@ public:
" SEND_ERROR = CMake Error, continue processing,\n"
" but skip generation\n"
" FATAL_ERROR = CMake Error, stop processing and generation\n"
+ " DEPRECATION = CMake Deprecation Error or Warning if variable\n"
+ " CMAKE_ERROR_DEPRECATED or CMAKE_WARN_DEPRECATED\n"
+ " is enabled, respectively, else no message.\n"
"The CMake command-line tool displays STATUS messages on stdout "
"and all other message types on stderr. "
"The CMake GUI displays all messages in its log area. "
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 2249323b67..d2961c0b39 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -3127,6 +3127,15 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
{
msg << "CMake Debug Log";
}
+ else if(t == cmake::DEPRECATION_ERROR)
+ {
+ msg << "CMake Deprecation Error";
+ isError = true;
+ }
+ else if (t == cmake::DEPRECATION_WARNING)
+ {
+ msg << "CMake Deprecation Warning";
+ }
else
{
msg << "CMake Warning";
diff --git a/Source/cmake.h b/Source/cmake.h
index ccf91e3f52..d33ba34e83 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -65,7 +65,9 @@ class cmake
INTERNAL_ERROR,
MESSAGE,
WARNING,
- LOG
+ LOG,
+ DEPRECATION_ERROR,
+ DEPRECATION_WARNING
};
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index ee490b8172..4fbc3b0fe4 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -95,6 +95,7 @@ add_RunCMake_test(if)
add_RunCMake_test(include)
add_RunCMake_test(include_directories)
add_RunCMake_test(list)
+add_RunCMake_test(message)
add_RunCMake_test(try_compile)
add_RunCMake_test(variable_watch)
add_RunCMake_test(CMP0004)
diff --git a/Tests/RunCMake/message/CMakeLists.txt b/Tests/RunCMake/message/CMakeLists.txt
new file mode 100644
index 0000000000..12cd3c7757
--- /dev/null
+++ b/Tests/RunCMake/message/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 2.8.4)
+project(${RunCMake_TEST} NONE)
+include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/message/RunCMakeTest.cmake b/Tests/RunCMake/message/RunCMakeTest.cmake
new file mode 100644
index 0000000000..d2bc0c3549
--- /dev/null
+++ b/Tests/RunCMake/message/RunCMakeTest.cmake
@@ -0,0 +1,5 @@
+include(RunCMake)
+
+run_cmake(nomessage)
+run_cmake(warnmessage)
+run_cmake(errormessage)
diff --git a/Tests/RunCMake/message/errormessage-result.txt b/Tests/RunCMake/message/errormessage-result.txt
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/Tests/RunCMake/message/errormessage-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/message/errormessage-stderr.txt b/Tests/RunCMake/message/errormessage-stderr.txt
new file mode 100644
index 0000000000..49e7ca9130
--- /dev/null
+++ b/Tests/RunCMake/message/errormessage-stderr.txt
@@ -0,0 +1,4 @@
+CMake Deprecation Error at errormessage.cmake:4 \(message\):
+ This is an error
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/message/errormessage.cmake b/Tests/RunCMake/message/errormessage.cmake
new file mode 100644
index 0000000000..7d3b7792be
--- /dev/null
+++ b/Tests/RunCMake/message/errormessage.cmake
@@ -0,0 +1,4 @@
+
+set(CMAKE_ERROR_DEPRECATED ON)
+
+message(DEPRECATION "This is an error")
diff --git a/Tests/RunCMake/message/nomessage-result.txt b/Tests/RunCMake/message/nomessage-result.txt
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/Tests/RunCMake/message/nomessage-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/message/nomessage-stderr.txt b/Tests/RunCMake/message/nomessage-stderr.txt
new file mode 100644
index 0000000000..10f32932ee
--- /dev/null
+++ b/Tests/RunCMake/message/nomessage-stderr.txt
@@ -0,0 +1 @@
+^$
diff --git a/Tests/RunCMake/message/nomessage.cmake b/Tests/RunCMake/message/nomessage.cmake
new file mode 100644
index 0000000000..bcc97be656
--- /dev/null
+++ b/Tests/RunCMake/message/nomessage.cmake
@@ -0,0 +1,2 @@
+
+message(DEPRECATION "This is not issued")
diff --git a/Tests/RunCMake/message/warnmessage-result.txt b/Tests/RunCMake/message/warnmessage-result.txt
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/Tests/RunCMake/message/warnmessage-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/message/warnmessage-stderr.txt b/Tests/RunCMake/message/warnmessage-stderr.txt
new file mode 100644
index 0000000000..5c44566372
--- /dev/null
+++ b/Tests/RunCMake/message/warnmessage-stderr.txt
@@ -0,0 +1,4 @@
+CMake Deprecation Warning at warnmessage.cmake:4 \(message\):
+ This is a warning
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/message/warnmessage.cmake b/Tests/RunCMake/message/warnmessage.cmake
new file mode 100644
index 0000000000..4c421a1299
--- /dev/null
+++ b/Tests/RunCMake/message/warnmessage.cmake
@@ -0,0 +1,4 @@
+
+set(CMAKE_WARN_DEPRECATED ON)
+
+message(DEPRECATION "This is a warning")