diff options
Diffstat (limited to 'Source/cmGeneratorExpressionEvaluator.cxx')
-rw-r--r-- | Source/cmGeneratorExpressionEvaluator.cxx | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index de6371a..a01a0f8 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -315,6 +315,7 @@ static const char* targetPropertyTransitiveWhitelist[] = { std::string getLinkedTargetsContent(const std::vector<std::string> &libraries, cmTarget *target, + cmTarget *headTarget, cmGeneratorExpressionContext *context, cmGeneratorExpressionDAGChecker *dagChecker, const std::string &interfacePropertyName) @@ -345,7 +346,7 @@ std::string getLinkedTargetsContent(const std::vector<std::string> &libraries, std::string linkedTargetsContent = cge->Evaluate(context->Makefile, context->Config, context->Quiet, - context->HeadTarget, + headTarget, target, dagChecker); if (cge->GetHadContextSensitiveCondition()) @@ -538,6 +539,8 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode interfacePropertyName = "INTERFACE_COMPILE_DEFINITIONS"; } + cmTarget *headTarget = context->HeadTarget ? context->HeadTarget : target; + const char **transBegin = targetPropertyTransitiveWhitelist; const char **transEnd = targetPropertyTransitiveWhitelist + (sizeof(targetPropertyTransitiveWhitelist) / @@ -547,11 +550,12 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode { const cmTarget::LinkInterface *iface = target->GetLinkInterface( context->Config, - context->HeadTarget); + headTarget); if(iface) { linkedTargetsContent = getLinkedTargetsContent(iface->Libraries, target, + headTarget, context, &dagChecker, interfacePropertyName); } @@ -561,11 +565,12 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode { const cmTarget::LinkImplementation *impl = target->GetLinkImplementation( context->Config, - context->HeadTarget); + headTarget); if(impl) { linkedTargetsContent = getLinkedTargetsContent(impl->Libraries, target, + headTarget, context, &dagChecker, interfacePropertyName); } @@ -614,7 +619,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode std::string result = cge->Evaluate(context->Makefile, context->Config, context->Quiet, - context->HeadTarget, + headTarget, target, &dagChecker); |