From 6865c8fe05d407077a598fcc0921ef62dfeaf021 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 18 Oct 2013 13:00:17 -0400 Subject: [PATCH] Add policy CMP0032 to disallow output_required_files --- Help/command/output_required_files.rst | 4 ++- Help/manual/cmake-policies.7.rst | 1 + Help/policy/CMP0032.rst | 13 ++++++++ Source/cmOutputRequiredFilesCommand.cxx | 3 ++ Source/cmOutputRequiredFilesCommand.h | 32 ++----------------- Source/cmPolicies.cxx | 5 +++ Source/cmPolicies.h | 1 + .../DisallowedCommands/CMP0032-NEW-result.txt | 1 + .../DisallowedCommands/CMP0032-NEW-stderr.txt | 4 +++ .../DisallowedCommands/CMP0032-NEW.cmake | 2 ++ .../DisallowedCommands/CMP0032-OLD-result.txt | 1 + .../DisallowedCommands/CMP0032-OLD-stderr.txt | 4 +++ .../DisallowedCommands/CMP0032-OLD.cmake | 2 ++ .../CMP0032-WARN-result.txt | 1 + .../CMP0032-WARN-stderr.txt | 12 +++++++ .../DisallowedCommands/CMP0032-WARN.cmake | 1 + .../DisallowedCommands/RunCMakeTest.cmake | 1 + 17 files changed, 58 insertions(+), 30 deletions(-) create mode 100644 Help/policy/CMP0032.rst create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-NEW-result.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-NEW-stderr.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-NEW.cmake create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-OLD-result.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-OLD-stderr.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-OLD.cmake create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-WARN-result.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-WARN-stderr.txt create mode 100644 Tests/RunCMake/DisallowedCommands/CMP0032-WARN.cmake diff --git a/Help/command/output_required_files.rst b/Help/command/output_required_files.rst index d6bce13be..5e1355763 100644 --- a/Help/command/output_required_files.rst +++ b/Help/command/output_required_files.rst @@ -1,7 +1,9 @@ output_required_files --------------------- -Deprecated. Approximate C preprocessor dependency scanning. +Disallowed. See CMake Policy :policy:`CMP0032`. + +Approximate C preprocessor dependency scanning. This command exists only because ancient CMake versions provided it. CMake handles preprocessor dependency scanning automatically using a diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index ab1bf39df..04ac33bab 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -61,3 +61,4 @@ All Policies /policy/CMP0029 /policy/CMP0030 /policy/CMP0031 + /policy/CMP0032 diff --git a/Help/policy/CMP0032.rst b/Help/policy/CMP0032.rst new file mode 100644 index 000000000..1b6be4854 --- /dev/null +++ b/Help/policy/CMP0032.rst @@ -0,0 +1,13 @@ +CMP0032 +------- + +The :command:`output_required_files` command should not be called. + +This command was added in June 2001 to expose the then-current CMake +implicit dependency scanner. CMake's real implicit dependency scanner +has evolved since then but is not exposed through this command. The +scanning capabilities of this command are very limited and this +functionality is better achieved through dedicated outside tools. + +.. |disallowed_version| replace:: 3.0.0 +.. include:: DISALLOWED_COMMAND.txt diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx index 01fc2cf8a..16b2beae9 100644 --- a/Source/cmOutputRequiredFilesCommand.cxx +++ b/Source/cmOutputRequiredFilesCommand.cxx @@ -174,6 +174,9 @@ void cmLBDepend::DependWalk(cmDependInformation* info) bool cmOutputRequiredFilesCommand ::InitialPass(std::vector const& args, cmExecutionStatus &) { + if(this->Disallowed(cmPolicies::CMP0032, + "The output_required_files command should not be called; see CMP0032.")) + { return true; } if(args.size() != 2 ) { this->SetError("called with incorrect number of arguments"); diff --git a/Source/cmOutputRequiredFilesCommand.h b/Source/cmOutputRequiredFilesCommand.h index d43b2295a..dd5ed6c83 100644 --- a/Source/cmOutputRequiredFilesCommand.h +++ b/Source/cmOutputRequiredFilesCommand.h @@ -15,45 +15,19 @@ #include "cmCommand.h" #include "cmMakeDepend.h" -/** \class cmOutputRequiredFilesCommand - * \brief Output a list of required files for a source file - * - */ class cmOutputRequiredFilesCommand : public cmCommand { public: - /** - * This is a virtual constructor for the command. - */ - virtual cmCommand* Clone() - { - return new cmOutputRequiredFilesCommand; - } - - /** - * This is called when the command is first encountered in - * the CMakeLists.txt file. - */ + cmTypeMacro(cmOutputRequiredFilesCommand, cmCommand); + virtual cmCommand* Clone() { return new cmOutputRequiredFilesCommand; } 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 "output_required_files";} + virtual bool IsDiscouraged() const { return true; } - /** This command is kept for compatibility with older CMake versions. */ - virtual bool IsDiscouraged() const - { - return true; - } - - - cmTypeMacro(cmOutputRequiredFilesCommand, cmCommand); void ListDependencies(cmDependInformation const *info, FILE *fout, std::set *visited); - private: std::string File; std::string OutputFile; diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 03e898ee1..bf4d2c14b 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -261,6 +261,11 @@ cmPolicies::cmPolicies() CMP0031, "CMP0031", "The load_command command should not be called.", 3,0,0,0, cmPolicies::WARN); + + this->DefinePolicy( + CMP0032, "CMP0032", + "The output_required_files command should not be called.", + 3,0,0,0, cmPolicies::WARN); } cmPolicies::~cmPolicies() diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 597296bfd..851fdb8a6 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -83,6 +83,7 @@ public: CMP0029, ///< Disallow command: subdir_depends CMP0030, ///< Disallow command: use_mangled_mesa CMP0031, ///< Disallow command: load_command + CMP0032, ///< Disallow command: output_required_files /** \brief Always the last entry. * diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-NEW-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0032-NEW-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-NEW-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-NEW-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0032-NEW-stderr.txt new file mode 100644 index 000000000..c7ac16eca --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-NEW-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at CMP0032-NEW.cmake:2 \(output_required_files\): + The output_required_files command should not be called; see CMP0032. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-NEW.cmake b/Tests/RunCMake/DisallowedCommands/CMP0032-NEW.cmake new file mode 100644 index 000000000..c6fb5e8f0 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-NEW.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0032 NEW) +output_required_files() diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-OLD-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0032-OLD-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-OLD-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-OLD-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0032-OLD-stderr.txt new file mode 100644 index 000000000..2223c420c --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-OLD-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at CMP0032-OLD.cmake:2 \(output_required_files\): + output_required_files called with incorrect number of arguments +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-OLD.cmake b/Tests/RunCMake/DisallowedCommands/CMP0032-OLD.cmake new file mode 100644 index 000000000..6585110ea --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-OLD.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0032 OLD) +output_required_files() diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-WARN-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0032-WARN-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-WARN-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-WARN-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0032-WARN-stderr.txt new file mode 100644 index 000000000..0cf3f94d6 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-WARN-stderr.txt @@ -0,0 +1,12 @@ +CMake Warning \(dev\) at CMP0032-WARN.cmake:1 \(output_required_files\): + Policy CMP0032 is not set: The output_required_files command should not be + called. Run "cmake --help-policy CMP0032" 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 CMP0032-WARN.cmake:1 \(output_required_files\): + output_required_files called with incorrect number of arguments +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0032-WARN.cmake b/Tests/RunCMake/DisallowedCommands/CMP0032-WARN.cmake new file mode 100644 index 000000000..7411e48ca --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0032-WARN.cmake @@ -0,0 +1 @@ +output_required_files() diff --git a/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake b/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake index aea23533b..3d54d8f31 100644 --- a/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake +++ b/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake @@ -4,6 +4,7 @@ foreach(p CMP0029 CMP0030 CMP0031 + CMP0032 ) run_cmake(${p}-WARN) run_cmake(${p}-OLD)