Add policy CMP0032 to disallow output_required_files

This commit is contained in:
Brad King 2013-10-18 13:00:17 -04:00
parent aa76518f8b
commit 6865c8fe05
17 changed files with 58 additions and 30 deletions

View File

@ -1,7 +1,9 @@
output_required_files 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. This command exists only because ancient CMake versions provided it.
CMake handles preprocessor dependency scanning automatically using a CMake handles preprocessor dependency scanning automatically using a

View File

@ -61,3 +61,4 @@ All Policies
/policy/CMP0029 /policy/CMP0029
/policy/CMP0030 /policy/CMP0030
/policy/CMP0031 /policy/CMP0031
/policy/CMP0032

13
Help/policy/CMP0032.rst Normal file
View File

@ -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

View File

@ -174,6 +174,9 @@ void cmLBDepend::DependWalk(cmDependInformation* info)
bool cmOutputRequiredFilesCommand bool cmOutputRequiredFilesCommand
::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) ::InitialPass(std::vector<std::string> 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 ) if(args.size() != 2 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");

View File

@ -15,45 +15,19 @@
#include "cmCommand.h" #include "cmCommand.h"
#include "cmMakeDepend.h" #include "cmMakeDepend.h"
/** \class cmOutputRequiredFilesCommand
* \brief Output a list of required files for a source file
*
*/
class cmOutputRequiredFilesCommand : public cmCommand class cmOutputRequiredFilesCommand : public cmCommand
{ {
public: public:
/** cmTypeMacro(cmOutputRequiredFilesCommand, cmCommand);
* This is a virtual constructor for the command. virtual cmCommand* Clone() { return new cmOutputRequiredFilesCommand; }
*/
virtual cmCommand* Clone()
{
return new cmOutputRequiredFilesCommand;
}
/**
* This is called when the command is first encountered in
* the CMakeLists.txt file.
*/
virtual bool InitialPass(std::vector<std::string> const& args, virtual bool InitialPass(std::vector<std::string> const& args,
cmExecutionStatus &status); cmExecutionStatus &status);
/**
* The name of the command as specified in CMakeList.txt.
*/
virtual const char* GetName() const { return "output_required_files";} 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, void ListDependencies(cmDependInformation const *info,
FILE *fout, FILE *fout,
std::set<cmDependInformation const*> *visited); std::set<cmDependInformation const*> *visited);
private: private:
std::string File; std::string File;
std::string OutputFile; std::string OutputFile;

View File

@ -261,6 +261,11 @@ cmPolicies::cmPolicies()
CMP0031, "CMP0031", CMP0031, "CMP0031",
"The load_command command should not be called.", "The load_command command should not be called.",
3,0,0,0, cmPolicies::WARN); 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() cmPolicies::~cmPolicies()

View File

@ -83,6 +83,7 @@ public:
CMP0029, ///< Disallow command: subdir_depends CMP0029, ///< Disallow command: subdir_depends
CMP0030, ///< Disallow command: use_mangled_mesa CMP0030, ///< Disallow command: use_mangled_mesa
CMP0031, ///< Disallow command: load_command CMP0031, ///< Disallow command: load_command
CMP0032, ///< Disallow command: output_required_files
/** \brief Always the last entry. /** \brief Always the last entry.
* *

View File

@ -0,0 +1 @@
1

View File

@ -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\)

View File

@ -0,0 +1,2 @@
cmake_policy(SET CMP0032 NEW)
output_required_files()

View File

@ -0,0 +1 @@
1

View File

@ -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\)

View File

@ -0,0 +1,2 @@
cmake_policy(SET CMP0032 OLD)
output_required_files()

View File

@ -0,0 +1 @@
1

View File

@ -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\)

View File

@ -0,0 +1 @@
output_required_files()

View File

@ -4,6 +4,7 @@ foreach(p
CMP0029 CMP0029
CMP0030 CMP0030
CMP0031 CMP0031
CMP0032
) )
run_cmake(${p}-WARN) run_cmake(${p}-WARN)
run_cmake(${p}-OLD) run_cmake(${p}-OLD)