Move ComputeLinkType out of cmTarget.
Keep it out of the way, so that it does not become part of cmGeneratorTarget, but where it can be used to implement CMP0003.
This commit is contained in:
parent
6d94078e62
commit
91411641a7
|
@ -185,7 +185,9 @@ cmComputeLinkDepends
|
|||
// The configuration being linked.
|
||||
this->HasConfig = !config.empty();
|
||||
this->Config = (this->HasConfig)? config : std::string();
|
||||
this->LinkType = this->Target->Target->ComputeLinkType(this->Config);
|
||||
std::vector<std::string> debugConfigs =
|
||||
this->Makefile->GetCMakeInstance()->GetDebugConfigs();
|
||||
this->LinkType = CMP0003_ComputeLinkType(this->Config, debugConfigs);
|
||||
|
||||
// Enable debug mode if requested.
|
||||
this->DebugMode = this->Makefile->IsOn("CMAKE_LINK_DEPENDS_DEBUG_MODE");
|
||||
|
|
|
@ -5877,7 +5877,12 @@ void cmGeneratorTarget::ComputeLinkImplementationLibraries(
|
|||
this->MaxLanguageStandards);
|
||||
}
|
||||
|
||||
cmTargetLinkLibraryType linkType = this->Target->ComputeLinkType(config);
|
||||
// Get the list of configurations considered to be DEBUG.
|
||||
std::vector<std::string> debugConfigs =
|
||||
this->Makefile->GetCMakeInstance()->GetDebugConfigs();
|
||||
|
||||
cmTargetLinkLibraryType linkType =
|
||||
CMP0003_ComputeLinkType(config, debugConfigs);
|
||||
cmTarget::LinkLibraryVectorType const& oldllibs =
|
||||
this->Target->GetOriginalLinkLibraries();
|
||||
for(cmTarget::LinkLibraryVectorType::const_iterator li = oldllibs.begin();
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#define cmLinkItem_h
|
||||
|
||||
#include "cmListFileCache.h"
|
||||
#include "cmSystemTools.h"
|
||||
|
||||
class cmGeneratorTarget;
|
||||
|
||||
|
@ -118,4 +119,27 @@ struct cmOptionalLinkImplementation: public cmLinkImplementation
|
|||
bool HadHeadSensitiveCondition;
|
||||
};
|
||||
|
||||
/** Compute the link type to use for the given configuration. */
|
||||
inline cmTargetLinkLibraryType
|
||||
CMP0003_ComputeLinkType(const std::string& config,
|
||||
std::vector<std::string> const& debugConfigs)
|
||||
{
|
||||
// No configuration is always optimized.
|
||||
if(config.empty())
|
||||
{
|
||||
return OPTIMIZED_LibraryType;
|
||||
}
|
||||
|
||||
// Check if any entry in the list matches this configuration.
|
||||
std::string configUpper = cmSystemTools::UpperCase(config);
|
||||
if (std::find(debugConfigs.begin(), debugConfigs.end(), configUpper) !=
|
||||
debugConfigs.end())
|
||||
{
|
||||
return DEBUG_LibraryType;
|
||||
}
|
||||
// The current configuration is not a debug configuration.
|
||||
return OPTIMIZED_LibraryType;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -582,31 +582,6 @@ const std::vector<std::string>& cmTarget::GetLinkDirectories() const
|
|||
return this->LinkDirectories;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmTargetLinkLibraryType cmTarget::ComputeLinkType(
|
||||
const std::string& config) const
|
||||
{
|
||||
// No configuration is always optimized.
|
||||
if(config.empty())
|
||||
{
|
||||
return OPTIMIZED_LibraryType;
|
||||
}
|
||||
|
||||
// Get the list of configurations considered to be DEBUG.
|
||||
std::vector<std::string> debugConfigs =
|
||||
this->Makefile->GetCMakeInstance()->GetDebugConfigs();
|
||||
|
||||
// Check if any entry in the list matches this configuration.
|
||||
std::string configUpper = cmSystemTools::UpperCase(config);
|
||||
if (std::find(debugConfigs.begin(), debugConfigs.end(), configUpper) !=
|
||||
debugConfigs.end())
|
||||
{
|
||||
return DEBUG_LibraryType;
|
||||
}
|
||||
// The current configuration is not a debug configuration.
|
||||
return OPTIMIZED_LibraryType;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmTarget::ClearDependencyInformation( cmMakefile& mf,
|
||||
const std::string& target )
|
||||
|
|
|
@ -140,9 +140,6 @@ public:
|
|||
const LinkLibraryVectorType &GetOriginalLinkLibraries() const
|
||||
{return this->OriginalLinkLibraries;}
|
||||
|
||||
/** Compute the link type to use for the given configuration. */
|
||||
cmTargetLinkLibraryType ComputeLinkType(const std::string& config) const;
|
||||
|
||||
/**
|
||||
* Clear the dependency information recorded for this target, if any.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue