Merge topic 'genex-CONFIG-validate-all'

910ada1a88 Genex: $<CONFIG:> syntax of all entries checked
42e417ad12 GeneratorExpression Tests: Remove duplicate test entry

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8082
This commit is contained in:
Brad King
2023-01-23 15:40:43 +00:00
committed by Kitware Robot
4 changed files with 31 additions and 4 deletions
+21 -3
View File
@@ -1352,12 +1352,30 @@ static const struct ConfigurationTestNode : public cmGeneratorExpressionNode
}
static cmsys::RegularExpression configValidator("^[A-Za-z0-9_]*$");
if (!configValidator.find(parameters.front())) {
reportError(context, content->GetOriginalExpression(),
"Expression syntax not recognized.");
return std::string();
}
context->HadContextSensitiveCondition = true;
bool firstParam = true;
for (auto const& param : parameters) {
if (!configValidator.find(param)) {
if (firstParam) {
reportError(context, content->GetOriginalExpression(),
"Expression syntax not recognized.");
return std::string();
}
// for backwards compat invalid config names are only errors as
// the first parameter
std::ostringstream e;
/* clang-format off */
e << "Warning evaluating generator expression:\n"
<< " " << content->GetOriginalExpression() << "\n"
<< "The config name of \"" << param << "\" is invalid";
/* clang-format on */
context->LG->GetCMakeInstance()->IssueMessage(
MessageType::WARNING, e.str(), context->Backtrace);
}
firstParam = false;
if (context->Config.empty()) {
if (param.empty()) {
return "1";
@@ -25,4 +25,13 @@ CMake Error at BadCONFIG.cmake:1 \(add_custom_target\):
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
+
CMake Warning at BadCONFIG.cmake:1 \(add_custom_target\):
Warning evaluating generator expression:
\$<CONFIG:Release,Foo-Second>
The config name of "Foo-Second" is invalid
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
+
CMake Generate step failed\. Build files cannot be regenerated correctly\.$
@@ -2,4 +2,5 @@ add_custom_target(check ALL COMMAND check
$<CONFIG:.>
$<CONFIG:Foo-Bar>
$<$<CONFIG:Foo-Nested>:foo>
$<$<CONFIG:Release,Foo-Second>:foo>
VERBATIM)
@@ -12,7 +12,6 @@ run_cmake(BadTargetTypeInterface)
run_cmake(BadTargetTypeObject)
run_cmake(BadInstallPrefix)
run_cmake(BadSHELL_PATH)
run_cmake(BadCONFIG)
run_cmake(CMP0044-WARN)
run_cmake(NonValidTarget-C_COMPILER_ID)
run_cmake(NonValidTarget-CXX_COMPILER_ID)