diff options
author | Brad King <brad.king@kitware.com> | 2014-06-16 15:31:11 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-06-23 12:50:08 (GMT) |
commit | 8d15a1bbfbefff919d8a7aa0d04f54d08d1f1a11 (patch) | |
tree | 9606f93ffadda147ab3523dad9512d09ee5b534e /Source | |
parent | 6354df92b12746dcb0f6fa263af2adf649cf1f3f (diff) | |
download | CMake-8d15a1bbfbefff919d8a7aa0d04f54d08d1f1a11.zip CMake-8d15a1bbfbefff919d8a7aa0d04f54d08d1f1a11.tar.gz CMake-8d15a1bbfbefff919d8a7aa0d04f54d08d1f1a11.tar.bz2 |
cmTarget: De-duplicate library list expansion
Create an ExpandLinkItems method to handle evaluation of generator
expressions in a library list and expansion of the ;-list into a vector.
Replace some duplicate copies of the implementation with calls to the
new helper.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmTarget.cxx | 61 | ||||
-rw-r--r-- | Source/cmTarget.h | 4 |
2 files changed, 31 insertions, 34 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 3b7bfaf..9d53fc2 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -3692,6 +3692,23 @@ void cmTarget::ComputeLinkClosure(const std::string& config, LinkClosure& lc, } //---------------------------------------------------------------------------- +void cmTarget::ExpandLinkItems(std::string const& prop, + std::string const& value, + std::string const& config, + cmTarget const* headTarget, + std::vector<std::string>& libs) const +{ + cmGeneratorExpression ge; + cmGeneratorExpressionDAGChecker dagChecker(this->GetName(), prop, 0, 0); + cmSystemTools::ExpandListArgument(ge.Parse(value)->Evaluate( + this->Makefile, + config, + false, + headTarget, + this, &dagChecker), libs); +} + +//---------------------------------------------------------------------------- const char* cmTarget::GetSuffixVariableInternal(bool implib) const { switch(this->GetType()) @@ -5870,19 +5887,8 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config, } if(propertyLibs) { - cmGeneratorExpression ge; - - cmGeneratorExpressionDAGChecker dagChecker( - this->GetName(), - linkProp, 0, 0); - cmSystemTools::ExpandListArgument(ge.Parse(propertyLibs) - ->Evaluate(this->Makefile, - desired_config, - false, - headTarget, - this, - &dagChecker), - info.LinkInterface.Libraries); + this->ExpandLinkItems(linkProp, propertyLibs, desired_config, + headTarget, info.LinkInterface.Libraries); } } if(this->GetType() == INTERFACE_LIBRARY) @@ -6302,15 +6308,8 @@ const char* cmTarget::ComputeLinkInterfaceLibraries(const std::string& config, if(explicitLibraries) { // The interface libraries have been explicitly set. - cmGeneratorExpression ge; - cmGeneratorExpressionDAGChecker dagChecker(this->GetName(), - linkIfaceProp, 0, 0); - cmSystemTools::ExpandListArgument(ge.Parse(explicitLibraries)->Evaluate( - this->Makefile, - config, - false, - headTarget, - this, &dagChecker), iface.Libraries); + this->ExpandLinkItems(linkIfaceProp, explicitLibraries, config, + headTarget, iface.Libraries); } else if (this->PolicyStatusCMP0022 == cmPolicies::WARN || this->PolicyStatusCMP0022 == cmPolicies::OLD) @@ -6328,19 +6327,13 @@ const char* cmTarget::ComputeLinkInterfaceLibraries(const std::string& config, { // Compare the link implementation fallback link interface to the // preferred new link interface property and warn if different. - cmGeneratorExpression ge; - cmGeneratorExpressionDAGChecker dagChecker(this->GetName(), - "INTERFACE_LINK_LIBRARIES", 0, 0); std::vector<std::string> ifaceLibs; - const char* newExplicitLibraries = - this->GetProperty("INTERFACE_LINK_LIBRARIES"); - cmSystemTools::ExpandListArgument( - ge.Parse(newExplicitLibraries)->Evaluate(this->Makefile, - config, - false, - headTarget, - this, &dagChecker), - ifaceLibs); + std::string newProp = "INTERFACE_LINK_LIBRARIES"; + if(const char* newExplicitLibraries = this->GetProperty(newProp)) + { + this->ExpandLinkItems(newProp, newExplicitLibraries, config, + headTarget, ifaceLibs); + } if (ifaceLibs != impl->Libraries) { std::string oldLibraries; diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 3b1b40a..ba3077e 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -764,6 +764,10 @@ private: void ComputeLinkClosure(const std::string& config, LinkClosure& lc, cmTarget const* head) const; + void ExpandLinkItems(std::string const& prop, std::string const& value, + std::string const& config, cmTarget const* headTarget, + std::vector<std::string>& libs) const; + std::string ProcessSourceItemCMP0049(const std::string& s); void ClearLinkMaps(); |