|
|
@@ -547,6 +547,7 @@ static const struct TargetGenexEvalNode : public GenexEvaluator
|
|
|
return expression;
|
|
|
}
|
|
|
|
|
|
+ // Replace the surrounding context with the named target.
|
|
|
cmGeneratorExpressionContext targetContext(
|
|
|
context->LG, context->Config, context->Quiet, target, target,
|
|
|
context->EvaluateForBuildsystem, context->Backtrace, context->Language);
|
|
|
@@ -2714,8 +2715,9 @@ static std::string getLinkedTargetsContent(
|
|
|
target->GetLocalGenerator(), context->Config, context->Quiet, target,
|
|
|
target, context->EvaluateForBuildsystem, lib.Backtrace,
|
|
|
context->Language);
|
|
|
- std::string libResult =
|
|
|
- lib.Target->EvaluateInterfaceProperty(prop, &libContext, dagChecker);
|
|
|
+ std::string libResult = lib.Target->EvaluateInterfaceProperty(
|
|
|
+ prop, &libContext, dagChecker,
|
|
|
+ cmGeneratorTarget::LinkInterfaceFor::Usage);
|
|
|
if (!libResult.empty()) {
|
|
|
if (result.empty()) {
|
|
|
result = std::move(libResult);
|
|
|
@@ -2896,6 +2898,9 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
|
|
bool evaluatingLinkLibraries = false;
|
|
|
|
|
|
if (dagCheckerParent) {
|
|
|
+ // This $<TARGET_PROPERTY:...> node has been reached while evaluating
|
|
|
+ // another target property value. Check that the outermost evaluation
|
|
|
+ // expects such nested evaluations.
|
|
|
if (dagCheckerParent->EvaluatingGenexExpression() ||
|
|
|
dagCheckerParent->EvaluatingPICExpression() ||
|
|
|
dagCheckerParent->EvaluatingLinkerLauncher()) {
|
|
|
@@ -2911,17 +2916,16 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
|
|
return std::string();
|
|
|
}
|
|
|
} else {
|
|
|
-#define ASSERT_TRANSITIVE_PROPERTY_METHOD(METHOD) dagCheckerParent->METHOD() ||
|
|
|
- assert(CM_FOR_EACH_TRANSITIVE_PROPERTY_METHOD(
|
|
|
- ASSERT_TRANSITIVE_PROPERTY_METHOD) false); // NOLINT(clang-tidy)
|
|
|
-#undef ASSERT_TRANSITIVE_PROPERTY_METHOD
|
|
|
+ assert(dagCheckerParent
|
|
|
+ ->EvaluatingTransitiveProperty()); // NOLINT(clang-tidy)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (isInterfaceProperty) {
|
|
|
return cmGeneratorExpression::StripEmptyListElements(
|
|
|
- target->EvaluateInterfaceProperty(propertyName, context,
|
|
|
- dagCheckerParent));
|
|
|
+ target->EvaluateInterfaceProperty(
|
|
|
+ propertyName, context, dagCheckerParent,
|
|
|
+ cmGeneratorTarget::LinkInterfaceFor::Usage));
|
|
|
}
|
|
|
|
|
|
cmGeneratorExpressionDAGChecker dagChecker(
|