From 3969bb23aafcdbd2174649e8eeb8f7b0e7ea6c4c Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 21 Oct 2013 11:58:48 -0400 Subject: [PATCH] Add policy CMP0035 to disallow variable_requires --- Help/command/variable_requires.rst | 4 ++- Help/manual/cmake-policies.7.rst | 1 + Help/policy/CMP0035.rst | 10 ++++++ Source/cmPolicies.cxx | 5 +++ Source/cmPolicies.h | 1 + Source/cmVariableRequiresCommand.cxx | 3 ++ Source/cmVariableRequiresCommand.h | 31 ++----------------- .../DisallowedCommands/CMP0035-NEW-result.txt | 1 + .../DisallowedCommands/CMP0035-NEW-stderr.txt | 4 +++ .../DisallowedCommands/CMP0035-NEW.cmake | 2 ++ .../DisallowedCommands/CMP0035-OLD-result.txt | 1 + .../DisallowedCommands/CMP0035-OLD-stderr.txt | 4 +++ .../DisallowedCommands/CMP0035-OLD.cmake | 2 ++ .../CMP0035-WARN-result.txt | 1 + .../CMP0035-WARN-stderr.txt | 12 +++++++ .../DisallowedCommands/CMP0035-WARN.cmake | 1 + .../DisallowedCommands/RunCMakeTest.cmake | 1 + 17 files changed, 55 insertions(+), 29 deletions(-) create mode 100644 Help/policy/CMP0035.rst create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-NEW-result.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-NEW-stderr.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-NEW.cmake create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-OLD-result.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-OLD-stderr.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-OLD.cmake create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-WARN-result.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-WARN-stderr.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0035-WARN.cmake diff --git a/Help/command/variable_requires.rst b/Help/command/variable_requires.rst index 7535e4092..831dd0023 100644 --- a/Help/command/variable_requires.rst +++ b/Help/command/variable_requires.rst @@ -1,7 +1,9 @@ variable_requires ----------------- -Deprecated. Use the if() command instead. +Disallowed. See CMake Policy :policy:`CMP0035`. + +Use the if() command instead. Assert satisfaction of an option's required variables. diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index 0e9d34687..3161cf0a3 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -64,3 +64,4 @@ All Policies /policy/CMP0032 /policy/CMP0033 /policy/CMP0034 + /policy/CMP0035 diff --git a/Help/policy/CMP0035.rst b/Help/policy/CMP0035.rst new file mode 100644 index 000000000..ebdaccc41 --- /dev/null +++ b/Help/policy/CMP0035.rst @@ -0,0 +1,10 @@ +CMP0035 +------- + +The :command:`variable_requires` command should not be called. + +This command was introduced in November 2001 to perform some conditional +logic. It has long been replaced by the :command:`if` command. + +.. |disallowed_version| replace:: 3.0.0 +.. include:: DISALLOWED_COMMAND.txt diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index f830806bd..aad088bfe 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -276,6 +276,11 @@ cmPolicies::cmPolicies() CMP0034, "CMP0034", "The utility_source command should not be called.", 3,0,0,0, cmPolicies::WARN); + + this->DefinePolicy( + CMP0035, "CMP0035", + "The variable_requires command should not be called.", + 3,0,0,0, cmPolicies::WARN); } cmPolicies::~cmPolicies() diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index ae1ccc12c..29ff1e3da 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -86,6 +86,7 @@ public: CMP0032, ///< Disallow command: output_required_files CMP0033, ///< Disallow command: export_library_dependencies CMP0034, ///< Disallow command: utility_source + CMP0035, ///< Disallow command: variable_requires /** \brief Always the last entry. * diff --git a/Source/cmVariableRequiresCommand.cxx b/Source/cmVariableRequiresCommand.cxx index 747e9be5e..ddb40034e 100644 --- a/Source/cmVariableRequiresCommand.cxx +++ b/Source/cmVariableRequiresCommand.cxx @@ -16,6 +16,9 @@ bool cmVariableRequiresCommand ::InitialPass(std::vectorconst& args, cmExecutionStatus &) { + if(this->Disallowed(cmPolicies::CMP0035, + "The variable_requires command should not be called; see CMP0035.")) + { return true; } if(args.size() < 3 ) { this->SetError("called with incorrect number of arguments"); diff --git a/Source/cmVariableRequiresCommand.h b/Source/cmVariableRequiresCommand.h index 1032745ad..881b14996 100644 --- a/Source/cmVariableRequiresCommand.h +++ b/Source/cmVariableRequiresCommand.h @@ -14,40 +14,15 @@ #include "cmCommand.h" -/** \class cmVariableRequiresCommand - * \brief Displays a message to the user - * - */ class cmVariableRequiresCommand : public cmCommand { public: - /** - * This is a virtual constructor for the command. - */ - virtual cmCommand* Clone() - { - return new cmVariableRequiresCommand; - } - - /** - * This is called when the command is first encountered in - * the CMakeLists.txt file. - */ + cmTypeMacro(cmVariableRequiresCommand, cmCommand); + virtual cmCommand* Clone() { return new cmVariableRequiresCommand; } virtual bool InitialPass(std::vector const& args, cmExecutionStatus &status); - - /** - * The name of the command as specified in CMakeList.txt. - */ virtual const char* GetName() const { return "variable_requires";} - - /** This command is kept for compatibility with older CMake versions. */ - virtual bool IsDiscouraged() const - { - return true; - } - - cmTypeMacro(cmVariableRequiresCommand, cmCommand); + virtual bool IsDiscouraged() const { return true; } }; diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-NEW-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0035-NEW-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-NEW-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-NEW-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0035-NEW-stderr.txt new file mode 100644 index 000000000..0604829ae --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-NEW-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at CMP0035-NEW.cmake:2 \(variable_requires\): + The variable_requires command should not be called; see CMP0035. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-NEW.cmake b/Tests/RunCMake/DisallowedCommands/CMP0035-NEW.cmake new file mode 100644 index 000000000..27eb32e18 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-NEW.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0035 NEW) +variable_requires() diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-OLD-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0035-OLD-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-OLD-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-OLD-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0035-OLD-stderr.txt new file mode 100644 index 000000000..86eda438c --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-OLD-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at CMP0035-OLD.cmake:2 \(variable_requires\): + variable_requires called with incorrect number of arguments +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-OLD.cmake b/Tests/RunCMake/DisallowedCommands/CMP0035-OLD.cmake new file mode 100644 index 000000000..74252628b --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-OLD.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0035 OLD) +variable_requires() diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-WARN-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0035-WARN-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-WARN-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-WARN-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0035-WARN-stderr.txt new file mode 100644 index 000000000..4d4fc8e84 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-WARN-stderr.txt @@ -0,0 +1,12 @@ +CMake Warning \(dev\) at CMP0035-WARN.cmake:1 \(variable_requires\): + Policy CMP0035 is not set: The variable_requires command should not be + called. Run "cmake --help-policy CMP0035" for policy details. Use the + cmake_policy command to set the policy and suppress this warning. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) +This warning is for project developers. Use -Wno-dev to suppress it. + +CMake Error at CMP0035-WARN.cmake:1 \(variable_requires\): + variable_requires called with incorrect number of arguments +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0035-WARN.cmake b/Tests/RunCMake/DisallowedCommands/CMP0035-WARN.cmake new file mode 100644 index 000000000..3af4de177 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0035-WARN.cmake @@ -0,0 +1 @@ +variable_requires() diff --git a/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake b/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake index 0bd8591d3..3211fd37a 100644 --- a/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake +++ b/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake @@ -7,6 +7,7 @@ foreach(p CMP0032 CMP0033 CMP0034 + CMP0035 ) run_cmake(${p}-WARN) run_cmake(${p}-OLD)