Add -W options to control deprecated warning messages.

Add 'deprecated' warning options type, to allow setting
CMAKE_WARN_DEPRECATED via the -W '-Wdeprecated' and
'-Wno-deprecated' options.

Add tests for new options and updated documentation.
This commit is contained in:
Michael Scott 2015-11-08 23:06:33 +00:00 committed by Brad King
parent 07388f83b6
commit da688bcb3b
9 changed files with 60 additions and 4 deletions

View File

@ -84,3 +84,15 @@
Enable warnings that are meant for the author of the CMakeLists.txt Enable warnings that are meant for the author of the CMakeLists.txt
files. files.
``-Wdeprecated``
Enable deprecated functionality warnings.
Enable warnings for usage of deprecated functionality, that are meant
for the author of the CMakeLists.txt files.
``-Wno-deprecated``
Suppress deprecated functionality warnings.
Suppress warnings for usage of deprecated functionality, that are meant
for the author of the CMakeLists.txt files.

View File

@ -0,0 +1,5 @@
cmake-W-options
---------------
* The :variable:`CMAKE_WARN_DEPRECATED` variable can now be set using the
``-Wdeprecated`` and ``-Wno-deprecated`` :manual:`cmake(1)` options.

View File

@ -1,7 +1,10 @@
CMAKE_WARN_DEPRECATED CMAKE_WARN_DEPRECATED
--------------------- ---------------------
Whether to issue deprecation warnings for macros and functions. Whether to issue warnings for deprecated functionality.
If ``TRUE``, this can be used by macros and functions to issue deprecation If ``TRUE``, use of deprecated functionality will issue warnings.
warnings. This variable is ``FALSE`` by default. If this variable is not set, CMake behaves as if it were set to ``FALSE``.
When running :manual:`cmake(1)`, this option can be enabled with the
``-Wdeprecated`` option, or disabled with the ``-Wno-deprecated`` option.

View File

@ -1263,6 +1263,26 @@ int cmake::Configure()
{ {
DiagLevel diagLevel; DiagLevel diagLevel;
if (this->DiagLevels.count("deprecated") == 1)
{
diagLevel = this->DiagLevels["deprecated"];
if (diagLevel == DIAG_IGNORE)
{
this->AddCacheEntry("CMAKE_WARN_DEPRECATED", "FALSE",
"Whether to issue warnings for deprecated "
"functionality.",
cmState::INTERNAL);
}
else if (diagLevel == DIAG_WARN)
{
this->AddCacheEntry("CMAKE_WARN_DEPRECATED", "TRUE",
"Whether to issue warnings for deprecated "
"functionality.",
cmState::INTERNAL);
}
}
if (this->DiagLevels.count("dev") == 1) if (this->DiagLevels.count("dev") == 1)
{ {

View File

@ -444,7 +444,9 @@ private:
{"-T <toolset-name>", "Specify toolset name if supported by generator."}, \ {"-T <toolset-name>", "Specify toolset name if supported by generator."}, \
{"-A <platform-name>", "Specify platform name if supported by generator."}, \ {"-A <platform-name>", "Specify platform name if supported by generator."}, \
{"-Wno-dev", "Suppress developer warnings."},\ {"-Wno-dev", "Suppress developer warnings."},\
{"-Wdev", "Enable developer warnings."} {"-Wdev", "Enable developer warnings."},\
{"-Wdeprecated", "Enable deprecation warnings."},\
{"-Wno-deprecated", "Suppress deprecation warnings."}
#define FOR_EACH_C_FEATURE(F) \ #define FOR_EACH_C_FEATURE(F) \
F(c_function_prototypes) \ F(c_function_prototypes) \

View File

@ -133,6 +133,14 @@ set(RunCMake_TEST_OPTIONS -Wdev)
run_cmake(Wdev) run_cmake(Wdev)
unset(RunCMake_TEST_OPTIONS) unset(RunCMake_TEST_OPTIONS)
set(RunCMake_TEST_OPTIONS -Wdeprecated)
run_cmake(Wdeprecated)
unset(RunCMake_TEST_OPTIONS)
set(RunCMake_TEST_OPTIONS -Wno-deprecated)
run_cmake(Wno-deprecated)
unset(RunCMake_TEST_OPTIONS)
# Dev warnings should be on by default # Dev warnings should be on by default
run_cmake(Wdev) run_cmake(Wdev)

View File

@ -0,0 +1,4 @@
^CMake Deprecation Warning at Wdeprecated.cmake:1 \(message\):
Some deprecated warning
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)

View File

@ -0,0 +1 @@
message(DEPRECATION "Some deprecated warning")

View File

@ -0,0 +1 @@
message(DEPRECATION "Some deprecated warning")