cmGeneratorTarget: Move IsLinkable from cmTarget.

This commit is contained in:
Stephen Kelly 2015-10-09 23:44:11 +02:00
parent a527abf099
commit 8e20ea6ef2
8 changed files with 20 additions and 19 deletions

View File

@ -643,7 +643,7 @@ void cmComputeLinkInformation::AddItem(std::string const& item,
return;
}
if(tgt && tgt->Target->IsLinkable())
if(tgt && tgt->IsLinkable())
{
// This is a CMake target. Ask the target for its real name.
if(impexe && this->LoaderFlag)

View File

@ -210,7 +210,7 @@ bool cmExportFileGenerator::PopulateInterfaceLinkLibrariesProperty(
ImportPropertyMap &properties,
std::vector<std::string> &missingTargets)
{
if(!target->Target->IsLinkable())
if(!target->IsLinkable())
{
return false;
}

View File

@ -1654,7 +1654,7 @@ struct TargetFilesystemArtifactResultCreator<ArtifactLinkerTag>
const GeneratorExpressionContent *content)
{
// The file used to link to the target (.so, .lib, .a).
if(!target->Target->IsLinkable())
if(!target->IsLinkable())
{
::reportError(context, content->GetOriginalExpression(),
"TARGET_LINKER_FILE is allowed only for libraries and "

View File

@ -5936,3 +5936,14 @@ std::string cmGeneratorTarget::GetSupportDirectory() const
#endif
return dir;
}
//----------------------------------------------------------------------------
bool cmGeneratorTarget::IsLinkable() const
{
return (this->GetType() == cmState::STATIC_LIBRARY ||
this->GetType() == cmState::SHARED_LIBRARY ||
this->GetType() == cmState::MODULE_LIBRARY ||
this->GetType() == cmState::UNKNOWN_LIBRARY ||
this->GetType() == cmState::INTERFACE_LIBRARY ||
this->Target->IsExecutableWithExports());
}

View File

@ -412,6 +412,9 @@ public:
/** Get a build-tree directory in which to place target support files. */
std::string GetSupportDirectory() const;
/** Return whether this target may be used to link another target. */
bool IsLinkable() const;
struct SourceFileFlags
GetTargetSourceFileFlags(const cmSourceFile* sf) const;

View File

@ -385,7 +385,7 @@ bool cmGlobalVisualStudioGenerator::ComputeTargetDepends()
}
//----------------------------------------------------------------------------
static bool VSLinkable(cmTarget const* t)
static bool VSLinkable(cmGeneratorTarget const* t)
{
return t->IsLinkable() || t->GetType() == cmState::OBJECT_LIBRARY;
}
@ -475,7 +475,8 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target)
di != utilDepends.end(); ++di)
{
cmTarget const* dep = *di;
if(allowLinkable || !VSLinkable(dep) || linked.count(dep))
cmGeneratorTarget* dgt = this->GetGeneratorTarget(dep);
if(allowLinkable || !VSLinkable(dgt) || linked.count(dep))
{
// Direct dependency allowed.
vsTargetDepend.insert(dep->GetName());

View File

@ -344,17 +344,6 @@ bool cmTarget::IsExecutableWithExports() const
this->GetPropertyAsBool("ENABLE_EXPORTS"));
}
//----------------------------------------------------------------------------
bool cmTarget::IsLinkable() const
{
return (this->GetType() == cmState::STATIC_LIBRARY ||
this->GetType() == cmState::SHARED_LIBRARY ||
this->GetType() == cmState::MODULE_LIBRARY ||
this->GetType() == cmState::UNKNOWN_LIBRARY ||
this->GetType() == cmState::INTERFACE_LIBRARY ||
this->IsExecutableWithExports());
}
//----------------------------------------------------------------------------
bool cmTarget::HasImportLibrary() const
{

View File

@ -228,9 +228,6 @@ public:
enabled. */
bool IsExecutableWithExports() const;
/** Return whether this target may be used to link another target. */
bool IsLinkable() const;
/** Return whether or not the target is for a DLL platform. */
bool IsDLLPlatform() const { return this->DLLPlatform; }