|
|
@@ -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);
|
|
|
|