From 1001490df27f3ab93f8a37a6f6c3b33aa26d22e2 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 16 Jun 2014 14:23:22 -0400 Subject: cmTarget: Teach ExpandLinkItems how to support $ Add a 'usage_requirements_only' parameter to ExpandLinkItems so that it knows whether to use SetTransitivePropertiesOnly while evaluating generator expressions. Update existing call sites to pass 'false' since they are for linking and not usage requirements. --- Source/cmTarget.cxx | 11 ++++++++--- Source/cmTarget.h | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 71d03df..32948cd 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -3688,10 +3688,15 @@ void cmTarget::ExpandLinkItems(std::string const& prop, std::string const& value, std::string const& config, cmTarget const* headTarget, + bool usage_requirements_only, std::vector& items) const { cmGeneratorExpression ge; cmGeneratorExpressionDAGChecker dagChecker(this->GetName(), prop, 0, 0); + if(usage_requirements_only) + { + dagChecker.SetTransitivePropertiesOnly(); + } std::vector libs; cmSystemTools::ExpandListArgument(ge.Parse(value)->Evaluate( this->Makefile, @@ -6135,7 +6140,7 @@ cmTarget::GetImportLinkInterface(const std::string& config, iface.Multiplicity = info->Multiplicity; cmSystemTools::ExpandListArgument(info->Languages, iface.Languages); this->ExpandLinkItems(info->LibrariesProp, info->Libraries, config, - headTarget, iface.Libraries); + headTarget, false, iface.Libraries); { std::vector deps; cmSystemTools::ExpandListArgument(info->SharedDeps, deps); @@ -6341,7 +6346,7 @@ const char* cmTarget::ComputeLinkInterfaceLibraries(const std::string& config, { // The interface libraries have been explicitly set. this->ExpandLinkItems(linkIfaceProp, explicitLibraries, config, - headTarget, iface.Libraries); + headTarget, false, iface.Libraries); } else if (this->PolicyStatusCMP0022 == cmPolicies::WARN || this->PolicyStatusCMP0022 == cmPolicies::OLD) @@ -6364,7 +6369,7 @@ const char* cmTarget::ComputeLinkInterfaceLibraries(const std::string& config, if(const char* newExplicitLibraries = this->GetProperty(newProp)) { this->ExpandLinkItems(newProp, newExplicitLibraries, config, - headTarget, ifaceLibs); + headTarget, false, ifaceLibs); } if (ifaceLibs != impl->Libraries) { diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 3f534f2..4930d70 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -777,6 +777,7 @@ private: void ExpandLinkItems(std::string const& prop, std::string const& value, std::string const& config, cmTarget const* headTarget, + bool usage_requirements_only, std::vector& items) const; void LookupLinkItems(std::vector const& names, std::vector& items) const; -- cgit v0.12