summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Help/release/dev/cmake-W-options.rst4
-rw-r--r--Help/variable/CMAKE_WARN_DEPRECATED.rst4
-rw-r--r--Source/cmMessageCommand.cxx14
-rw-r--r--Source/cmake.cxx24
-rw-r--r--Source/cmake.h7
-rw-r--r--Tests/RunCMake/CommandLine/RunCMakeTest.cmake3
-rw-r--r--Tests/RunCMake/message/defaultmessage-stderr.txt8
-rw-r--r--Tests/RunCMake/message/nomessage.cmake2
8 files changed, 54 insertions, 12 deletions
diff --git a/Help/release/dev/cmake-W-options.rst b/Help/release/dev/cmake-W-options.rst
index 47847186eb..57d375f5d0 100644
--- a/Help/release/dev/cmake-W-options.rst
+++ b/Help/release/dev/cmake-W-options.rst
@@ -6,3 +6,7 @@ cmake-W-options
* The ``-Wdev`` and ``-Wno-dev`` :manual:`cmake(1)` options now also enable
and suppress the deprecated warnings output by default.
+
+* Warnings about deprecated functionality are now enabled by default.
+ They may be suppressed with ``-Wno-deprecated`` or by setting the
+ :variable:`CMAKE_WARN_DEPRECATED` variable to false.
diff --git a/Help/variable/CMAKE_WARN_DEPRECATED.rst b/Help/variable/CMAKE_WARN_DEPRECATED.rst
index 5f87c348a7..4a224fa5cf 100644
--- a/Help/variable/CMAKE_WARN_DEPRECATED.rst
+++ b/Help/variable/CMAKE_WARN_DEPRECATED.rst
@@ -3,8 +3,8 @@ CMAKE_WARN_DEPRECATED
Whether to issue warnings for deprecated functionality.
-If ``TRUE``, use of deprecated functionality will issue warnings.
-If this variable is not set, CMake behaves as if it were set to ``FALSE``.
+If not ``FALSE``, use of deprecated functionality will issue warnings.
+If this variable is not set, CMake behaves as if it were set to ``TRUE``.
When running :manual:`cmake(1)`, this option can be enabled with the
``-Wdeprecated`` option, or disabled with the ``-Wno-deprecated`` option.
diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx
index fd0345d0bb..8272eb09f1 100644
--- a/Source/cmMessageCommand.cxx
+++ b/Source/cmMessageCommand.cxx
@@ -66,13 +66,17 @@ bool cmMessageCommand
fatal = true;
type = cmake::DEPRECATION_ERROR;
}
- else if (this->Makefile->IsOn("CMAKE_WARN_DEPRECATED"))
- {
- type = cmake::DEPRECATION_WARNING;
- }
else
{
- return true;
+ if (this->Makefile->GetCMakeInstance()->GetSuppressDeprecatedWarnings(
+ this->Makefile))
+ {
+ return true;
+ }
+ else
+ {
+ type = cmake::DEPRECATION_WARNING;
+ }
}
++i;
}
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 6481c78d1e..c0a11965f2 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -2581,10 +2581,7 @@ bool cmake::IsMessageTypeVisible(cmake::MessageType t)
}
else if (t == cmake::DEPRECATION_WARNING)
{
- // if CMAKE_WARN_DEPRECATED is on, show the message, otherwise suppress it
- const char* warnDeprecated = this->State->GetInitializedCacheValue(
- "CMAKE_WARN_DEPRECATED");
- if(cmSystemTools::IsOff(warnDeprecated))
+ if (this->GetSuppressDeprecatedWarnings())
{
isVisible = false;
}
@@ -2916,3 +2913,22 @@ bool cmake::GetSuppressDevWarnings(cmMakefile const* mf)
return cmSystemTools::IsOn(cacheEntryValue);
}
}
+
+bool cmake::GetSuppressDeprecatedWarnings(cmMakefile const* mf)
+{
+ /*
+ * The suppression CMake variable may be set in the CMake configuration file
+ * itself, so we have to check what its set to in the makefile if we can.
+ */
+ if (mf)
+ {
+ return (mf->IsSet("CMAKE_WARN_DEPRECATED") &&
+ !mf->IsOn("CMAKE_WARN_DEPRECATED"));
+ }
+ else
+ {
+ const char* cacheEntryValue = this->State->GetCacheEntryValue(
+ "CMAKE_WARN_DEPRECATED");
+ return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
+ }
+}
diff --git a/Source/cmake.h b/Source/cmake.h
index 8739b87b71..4c5515b8ab 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -316,6 +316,13 @@ class cmake
*/
bool GetSuppressDevWarnings(cmMakefile const* mf = NULL);
+ /*
+ * Get the state of the suppression of deprecated warnings.
+ * Returns false, by default, if deprecated warnings should be shown, true
+ * otherwise.
+ */
+ bool GetSuppressDeprecatedWarnings(cmMakefile const* mf = NULL);
+
/** Display a message to the user. */
void IssueMessage(cmake::MessageType t, std::string const& text,
cmListFileBacktrace const& backtrace = cmListFileBacktrace(),
diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
index efe143ed68..6b4b3849c1 100644
--- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
@@ -157,6 +157,9 @@ unset(RunCMake_TEST_OPTIONS)
# Dev warnings should be on by default
run_cmake(Wdev)
+# Deprecated warnings should be on by default
+run_cmake(Wdeprecated)
+
# Conflicting -W options should honor the last value
set(RunCMake_TEST_OPTIONS -Wno-dev -Wdev)
run_cmake(Wdev)
diff --git a/Tests/RunCMake/message/defaultmessage-stderr.txt b/Tests/RunCMake/message/defaultmessage-stderr.txt
index 95656ec193..dd1b28fde4 100644
--- a/Tests/RunCMake/message/defaultmessage-stderr.txt
+++ b/Tests/RunCMake/message/defaultmessage-stderr.txt
@@ -1,4 +1,10 @@
-^CMake Warning \(dev\) at defaultmessage.cmake:4 \(message\):
+^CMake Deprecation Warning at defaultmessage.cmake:2 \(message\):
+ This is a deprecation warning
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)
+
+
+CMake Warning \(dev\) at defaultmessage.cmake:4 \(message\):
This is a author warning
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/message/nomessage.cmake b/Tests/RunCMake/message/nomessage.cmake
index 582ab4dd79..78f4769457 100644
--- a/Tests/RunCMake/message/nomessage.cmake
+++ b/Tests/RunCMake/message/nomessage.cmake
@@ -1,4 +1,6 @@
+set(CMAKE_WARN_DEPRECATED OFF)
+
message(DEPRECATION "This is not issued")
set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS ON)