Merge topic 'cmp0153-suggestion'

d3cc815c98 CMP0153: Add suggestion to use execute_process()
8313d26198 cmState::AddDisallowedCommand(): Allow additional warning info

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: Brad King <brad.king@kitware.com>
Merge-request: !8921
This commit is contained in:
Brad King
2023-10-30 12:22:00 +00:00
committed by Kitware Robot
5 changed files with 23 additions and 11 deletions

View File

@@ -219,9 +219,11 @@ void GetScriptingCommands(cmState* state)
state->AddDisallowedCommand(
"use_mangled_mesa", cmUseMangledMesaCommand, cmPolicies::CMP0030,
"The use_mangled_mesa command should not be called; see CMP0030.");
state->AddDisallowedCommand(
"exec_program", cmExecProgramCommand, cmPolicies::CMP0153,
"The exec_program command should not be called; see CMP0153.");
state->AddDisallowedCommand("exec_program", cmExecProgramCommand,
cmPolicies::CMP0153,
"The exec_program command should not be called; "
"see CMP0153. Use execute_process() instead.",
"Use execute_process() instead.");
#endif
}

View File

@@ -447,17 +447,23 @@ void cmState::AddFlowControlCommand(std::string const& name,
void cmState::AddDisallowedCommand(std::string const& name,
BuiltinCommand command,
cmPolicies::PolicyID policy,
const char* message)
const char* message,
const char* additionalWarning)
{
this->AddBuiltinCommand(
name,
[command, policy, message](const std::vector<cmListFileArgument>& args,
cmExecutionStatus& status) -> bool {
[command, policy, message,
additionalWarning](const std::vector<cmListFileArgument>& args,
cmExecutionStatus& status) -> bool {
cmMakefile& mf = status.GetMakefile();
switch (mf.GetPolicyStatus(policy)) {
case cmPolicies::WARN:
mf.IssueMessage(MessageType::AUTHOR_WARNING,
cmPolicies::GetPolicyWarning(policy));
case cmPolicies::WARN: {
std::string warning = cmPolicies::GetPolicyWarning(policy);
if (additionalWarning) {
warning = cmStrCat(warning, '\n', additionalWarning);
}
mf.IssueMessage(MessageType::AUTHOR_WARNING, warning);
}
CM_FALLTHROUGH;
case cmPolicies::OLD:
break;

View File

@@ -183,7 +183,8 @@ public:
void AddFlowControlCommand(std::string const& name, Command command);
void AddFlowControlCommand(std::string const& name, BuiltinCommand command);
void AddDisallowedCommand(std::string const& name, BuiltinCommand command,
cmPolicies::PolicyID policy, const char* message);
cmPolicies::PolicyID policy, const char* message,
const char* additionalWarning = nullptr);
void AddUnexpectedCommand(std::string const& name, const char* error);
void AddUnexpectedFlowControlCommand(std::string const& name,
const char* error);

View File

@@ -1,3 +1,4 @@
^CMake Error at [^
]*/Tests/RunCMake/CMP0153/CMP0153-NEW\.cmake:[0-9]+ \(exec_program\):
The exec_program command should not be called; see CMP0153\.$
The exec_program command should not be called; see CMP0153\. Use
execute_process\(\) instead\.$

View File

@@ -3,4 +3,6 @@
Policy CMP0153 is not set: The exec_program command should not be called\.
Run "cmake --help-policy CMP0153" for policy details\. Use the cmake_policy
command to set the policy and suppress this warning\.
Use execute_process\(\) instead\.
This warning is for project developers\. Use -Wno-dev to suppress it\.$