From e72eaadc42be80ef8273addfc19a6dd13b5feb90 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 22 Feb 2013 17:16:19 +0100 Subject: Workaround broken code where a target has itself in its link iface. There is a test for this since commit 8e756d2b (Tolerate cycles in shared library link interfaces (#12647), 2012-01-12), so make sure it continues to pass, even as we require no self-references in new INTERFACE_ property generator expressions. --- Source/cmGeneratorExpressionEvaluator.cxx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index 023daf8..3407187 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -471,6 +471,13 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode if (propertyName == "INTERFACE_INCLUDE_DIRECTORIES" || propertyName == "INTERFACE_COMPILE_DEFINITIONS") { + if (*it == target->GetName()) + { + // Broken code can have a target in its own link interface. + // Don't follow such link interface entries so as not to create a + // self-referencing loop. + continue; + } const cmTarget::LinkInterface *iface = target->GetLinkInterface( context->Config, context->HeadTarget); -- cgit v0.12