diff --git a/Help/command/utility_source.rst b/Help/command/utility_source.rst index e5136270c..5122e520a 100644 --- a/Help/command/utility_source.rst +++ b/Help/command/utility_source.rst @@ -1,6 +1,8 @@ utility_source -------------- +Disallowed. See CMake Policy :policy:`CMP0034`. + Specify the source tree of a third-party utility. :: diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index 062a75d03..0e9d34687 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -63,3 +63,4 @@ All Policies /policy/CMP0031 /policy/CMP0032 /policy/CMP0033 + /policy/CMP0034 diff --git a/Help/policy/CMP0034.rst b/Help/policy/CMP0034.rst new file mode 100644 index 000000000..1dd6e5c6c --- /dev/null +++ b/Help/policy/CMP0034.rst @@ -0,0 +1,11 @@ +CMP0034 +------- + +The :command:`utility_source` command should not be called. + +This command was introduced in March 2001 to help build executables used to +generate other files. This approach has long been replaced by +:command:`add_executable` combined with :command:`add_custom_command`. + +.. |disallowed_version| replace:: 3.0.0 +.. include:: DISALLOWED_COMMAND.txt diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 7852d9aa1..f830806bd 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -271,6 +271,11 @@ cmPolicies::cmPolicies() CMP0033, "CMP0033", "The export_library_dependencies command should not be called.", 3,0,0,0, cmPolicies::WARN); + + this->DefinePolicy( + CMP0034, "CMP0034", + "The utility_source command should not be called.", + 3,0,0,0, cmPolicies::WARN); } cmPolicies::~cmPolicies() diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 99982c4a6..ae1ccc12c 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -85,6 +85,7 @@ public: CMP0031, ///< Disallow command: load_command CMP0032, ///< Disallow command: output_required_files CMP0033, ///< Disallow command: export_library_dependencies + CMP0034, ///< Disallow command: utility_source /** \brief Always the last entry. * diff --git a/Source/cmUtilitySourceCommand.cxx b/Source/cmUtilitySourceCommand.cxx index 6ea3dfac8..11e510805 100644 --- a/Source/cmUtilitySourceCommand.cxx +++ b/Source/cmUtilitySourceCommand.cxx @@ -15,6 +15,9 @@ bool cmUtilitySourceCommand ::InitialPass(std::vector const& args, cmExecutionStatus &) { + if(this->Disallowed(cmPolicies::CMP0034, + "The utility_source command should not be called; see CMP0034.")) + { return true; } if(args.size() < 3) { this->SetError("called with incorrect number of arguments"); diff --git a/Source/cmUtilitySourceCommand.h b/Source/cmUtilitySourceCommand.h index 0a0653c5c..83d115c38 100644 --- a/Source/cmUtilitySourceCommand.h +++ b/Source/cmUtilitySourceCommand.h @@ -14,48 +14,15 @@ #include "cmCommand.h" -/** \class cmUtilitySourceCommand - * \brief A command to setup a cache entry with the location of a third-party - * utility's source. - * - * cmUtilitySourceCommand is used when a third-party utility's source is - * included in the project's source tree. It specifies the location of - * the executable's source, and any files that may be needed to confirm the - * identity of the source. - */ class cmUtilitySourceCommand : public cmCommand { public: - /** - * This is a virtual constructor for the command. - */ - virtual cmCommand* Clone() - { - return new cmUtilitySourceCommand; - } - - /** - * This is called when the command is first encountered in - * the CMakeLists.txt file. - */ + cmTypeMacro(cmUtilitySourceCommand, cmCommand); + virtual cmCommand* Clone() { return new cmUtilitySourceCommand; } 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 "utility_source";} - - /** This command is kept for compatibility with older CMake versions. */ - virtual bool IsDiscouraged() const - { - return true; - } - - - cmTypeMacro(cmUtilitySourceCommand, cmCommand); + virtual bool IsDiscouraged() const { return true; } }; - - #endif diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-NEW-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0034-NEW-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-NEW-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-NEW-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0034-NEW-stderr.txt new file mode 100644 index 000000000..1dd279b8c --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-NEW-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at CMP0034-NEW.cmake:2 \(utility_source\): + The utility_source command should not be called; see CMP0034. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-NEW.cmake b/Tests/RunCMake/DisallowedCommands/CMP0034-NEW.cmake new file mode 100644 index 000000000..48724a97e --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-NEW.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0034 NEW) +utility_source() diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-OLD-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0034-OLD-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-OLD-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-OLD-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0034-OLD-stderr.txt new file mode 100644 index 000000000..3358628a6 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-OLD-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at CMP0034-OLD.cmake:2 \(utility_source\): + utility_source called with incorrect number of arguments +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-OLD.cmake b/Tests/RunCMake/DisallowedCommands/CMP0034-OLD.cmake new file mode 100644 index 000000000..a2c9798dc --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-OLD.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0034 OLD) +utility_source() diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-WARN-result.txt b/Tests/RunCMake/DisallowedCommands/CMP0034-WARN-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-WARN-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-WARN-stderr.txt b/Tests/RunCMake/DisallowedCommands/CMP0034-WARN-stderr.txt new file mode 100644 index 000000000..ea3831f9b --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-WARN-stderr.txt @@ -0,0 +1,12 @@ +CMake Warning \(dev\) at CMP0034-WARN.cmake:1 \(utility_source\): + Policy CMP0034 is not set: The utility_source command should not be called. + Run "cmake --help-policy CMP0034" 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 CMP0034-WARN.cmake:1 \(utility_source\): + utility_source called with incorrect number of arguments +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/DisallowedCommands/CMP0034-WARN.cmake b/Tests/RunCMake/DisallowedCommands/CMP0034-WARN.cmake new file mode 100644 index 000000000..b4ae04566 --- /dev/null +++ b/Tests/RunCMake/DisallowedCommands/CMP0034-WARN.cmake @@ -0,0 +1 @@ +utility_source() diff --git a/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake b/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake index 003298aaa..0bd8591d3 100644 --- a/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake +++ b/Tests/RunCMake/DisallowedCommands/RunCMakeTest.cmake @@ -6,6 +6,7 @@ foreach(p CMP0031 CMP0032 CMP0033 + CMP0034 ) run_cmake(${p}-WARN) run_cmake(${p}-OLD)