diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-08-26 17:39:17 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-08-26 17:39:17 (GMT) |
commit | 2cb3e5740269757f6f93d24a4d13570ee72de318 (patch) | |
tree | e75cf0d94962d00adf5264f2a5d117dc4e4731e5 /Source | |
parent | 6d3d099b4a2d8b020fb1a9ebeb29b17b3fb6c9d6 (diff) | |
download | CMake-2cb3e5740269757f6f93d24a4d13570ee72de318.zip CMake-2cb3e5740269757f6f93d24a4d13570ee72de318.tar.gz CMake-2cb3e5740269757f6f93d24a4d13570ee72de318.tar.bz2 |
cmGeneratorTarget: Move GetImportLinkInterface from cmTarget.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGeneratorTarget.cxx | 69 | ||||
-rw-r--r-- | Source/cmGeneratorTarget.h | 14 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 65 | ||||
-rw-r--r-- | Source/cmTarget.h | 10 |
4 files changed, 78 insertions, 80 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 40a3637..c966e24 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -3370,7 +3370,7 @@ cmGeneratorTarget::GetLinkInterface(const std::string& config, // Imported targets have their own link interface. if(this->IsImported()) { - return this->Target->GetImportLinkInterface(config, head, false); + return this->GetImportLinkInterface(config, head, false); } // Link interfaces are not supported for executables that do not @@ -3383,7 +3383,7 @@ cmGeneratorTarget::GetLinkInterface(const std::string& config, // Lookup any existing link interface for this configuration. cmHeadToLinkInterfaceMap& hm = - this->Target->GetHeadToLinkInterfaceMap(config); + this->GetHeadToLinkInterfaceMap(config); // If the link interface does not depend on the head target // then return the one we computed first. @@ -3518,7 +3518,7 @@ cmGeneratorTarget::GetLinkInterfaceLibraries(const std::string& config, // Imported targets have their own link interface. if(this->IsImported()) { - return this->Target->GetImportLinkInterface(config, head, + return this->GetImportLinkInterface(config, head, usage_requirements_only); } @@ -3534,8 +3534,8 @@ cmGeneratorTarget::GetLinkInterfaceLibraries(const std::string& config, std::string CONFIG = cmSystemTools::UpperCase(config); cmHeadToLinkInterfaceMap& hm = (usage_requirements_only ? - this->Target->GetHeadToLinkInterfaceUsageRequirementsMap(config) : - this->Target->GetHeadToLinkInterfaceMap(config)); + this->GetHeadToLinkInterfaceUsageRequirementsMap(config) : + this->GetHeadToLinkInterfaceMap(config)); // If the link interface does not depend on the head target // then return the one we computed first. @@ -3705,3 +3705,62 @@ cmGeneratorTarget::ComputeLinkInterfaceLibraries( } } } + +//---------------------------------------------------------------------------- +const cmLinkInterface * +cmGeneratorTarget::GetImportLinkInterface(const std::string& config, + cmTarget const* headTarget, + bool usage_requirements_only) const +{ + cmTarget::ImportInfo const* info = this->Target->GetImportInfo(config); + if(!info) + { + return 0; + } + + std::string CONFIG = cmSystemTools::UpperCase(config); + cmHeadToLinkInterfaceMap& hm = + (usage_requirements_only ? + this->GetHeadToLinkInterfaceUsageRequirementsMap(config) : + this->GetHeadToLinkInterfaceMap(config)); + + // If the link interface does not depend on the head target + // then return the one we computed first. + if(!hm.empty() && !hm.begin()->second.HadHeadSensitiveCondition) + { + return &hm.begin()->second; + } + + cmOptionalLinkInterface& iface = hm[headTarget]; + if(!iface.AllDone) + { + iface.AllDone = true; + iface.Multiplicity = info->Multiplicity; + cmSystemTools::ExpandListArgument(info->Languages, iface.Languages); + this->Target->ExpandLinkItems(info->LibrariesProp, info->Libraries, + config, + headTarget, usage_requirements_only, + iface.Libraries, + iface.HadHeadSensitiveCondition); + std::vector<std::string> deps; + cmSystemTools::ExpandListArgument(info->SharedDeps, deps); + this->Target->LookupLinkItems(deps, iface.SharedDeps); + } + + return &iface; +} + +cmHeadToLinkInterfaceMap& +cmGeneratorTarget::GetHeadToLinkInterfaceMap(const std::string &config) const +{ + std::string CONFIG = cmSystemTools::UpperCase(config); + return this->LinkInterfaceMap[CONFIG]; +} + +cmHeadToLinkInterfaceMap& +cmGeneratorTarget::GetHeadToLinkInterfaceUsageRequirementsMap( + const std::string &config) const +{ + std::string CONFIG = cmSystemTools::UpperCase(config); + return this->LinkInterfaceUsageRequirementsOnlyMap[CONFIG]; +} diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index ac2b96c..9c5adf6 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -390,6 +390,20 @@ private: }; mutable std::map<std::string, LinkImplClosure> LinkImplClosureMap; + typedef std::map<std::string, cmHeadToLinkInterfaceMap> + LinkInterfaceMapType; + mutable LinkInterfaceMapType LinkInterfaceMap; + mutable LinkInterfaceMapType LinkInterfaceUsageRequirementsOnlyMap; + + cmHeadToLinkInterfaceMap& + GetHeadToLinkInterfaceMap(std::string const& config) const; + cmHeadToLinkInterfaceMap& GetHeadToLinkInterfaceUsageRequirementsMap( + std::string const& config) const; + + cmLinkInterface const* + GetImportLinkInterface(const std::string& config, cmTarget const* head, + bool usage_requirements_only) const; + typedef std::pair<std::string, bool> OutputNameKey; typedef std::map<OutputNameKey, std::string> OutputNameMapType; mutable OutputNameMapType OutputNameMap; diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 9e9aed4..8628583 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -89,11 +89,6 @@ public: // The backtrace when the target was created. cmListFileBacktrace Backtrace; - typedef std::map<std::string, cmHeadToLinkInterfaceMap> - LinkInterfaceMapType; - LinkInterfaceMapType LinkInterfaceMap; - LinkInterfaceMapType LinkInterfaceUsageRequirementsOnlyMap; - typedef std::map<std::string, cmTarget::OutputInfo> OutputInfoMapType; OutputInfoMapType OutputInfoMap; @@ -510,8 +505,6 @@ void cmTarget::ClearLinkMaps() { this->LinkImplementationLanguageIsContextDependent = true; this->Internal->LinkImplMap.clear(); - this->Internal->LinkInterfaceMap.clear(); - this->Internal->LinkInterfaceUsageRequirementsOnlyMap.clear(); this->Internal->SourceFilesMap.clear(); } @@ -4104,64 +4097,6 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config, } } -cmHeadToLinkInterfaceMap& -cmTarget::GetHeadToLinkInterfaceMap(const std::string &config) const -{ - std::string CONFIG = cmSystemTools::UpperCase(config); - return this->Internal->LinkInterfaceMap[CONFIG]; -} - -cmHeadToLinkInterfaceMap& -cmTarget::GetHeadToLinkInterfaceUsageRequirementsMap( - const std::string &config) const -{ - std::string CONFIG = cmSystemTools::UpperCase(config); - return this->Internal->LinkInterfaceUsageRequirementsOnlyMap[CONFIG]; -} - -//---------------------------------------------------------------------------- -const cmLinkInterface * -cmTarget::GetImportLinkInterface(const std::string& config, - cmTarget const* headTarget, - bool usage_requirements_only) const -{ - cmTarget::ImportInfo const* info = this->GetImportInfo(config); - if(!info) - { - return 0; - } - - std::string CONFIG = cmSystemTools::UpperCase(config); - cmHeadToLinkInterfaceMap& hm = - (usage_requirements_only ? - this->GetHeadToLinkInterfaceUsageRequirementsMap(config) : - this->GetHeadToLinkInterfaceMap(config)); - - // If the link interface does not depend on the head target - // then return the one we computed first. - if(!hm.empty() && !hm.begin()->second.HadHeadSensitiveCondition) - { - return &hm.begin()->second; - } - - cmOptionalLinkInterface& iface = hm[headTarget]; - if(!iface.AllDone) - { - iface.AllDone = true; - iface.Multiplicity = info->Multiplicity; - cmSystemTools::ExpandListArgument(info->Languages, iface.Languages); - this->ExpandLinkItems(info->LibrariesProp, info->Libraries, config, - headTarget, usage_requirements_only, - iface.Libraries, - iface.HadHeadSensitiveCondition); - std::vector<std::string> deps; - cmSystemTools::ExpandListArgument(info->SharedDeps, deps); - this->LookupLinkItems(deps, iface.SharedDeps); - } - - return &iface; -} - //---------------------------------------------------------------------------- void cmTargetInternals::AddInterfaceEntries( cmTarget const* thisTarget, std::string const& config, diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 985e958..25de6a6 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -233,11 +233,6 @@ public: void GetObjectLibrariesCMP0026(std::vector<cmTarget*>& objlibs) const; - cmHeadToLinkInterfaceMap& - GetHeadToLinkInterfaceMap(std::string const& config) const; - cmHeadToLinkInterfaceMap& GetHeadToLinkInterfaceUsageRequirementsMap( - std::string const& config) const; - struct LinkImplementation: public cmLinkImplementationLibraries { // Languages whose runtime libraries must be linked. @@ -559,11 +554,6 @@ private: void ComputeImportInfo(std::string const& desired_config, ImportInfo& info) const; - - cmLinkInterface const* - GetImportLinkInterface(const std::string& config, cmTarget const* head, - bool usage_requirements_only) const; - cmLinkImplementationLibraries const* GetLinkImplementationLibrariesInternal(const std::string& config, cmTarget const* head) const; |