cmGeneratorTarget: Move GetOutputTargetType from cmTarget.

This commit is contained in:
Stephen Kelly 2015-08-05 19:11:48 +02:00
parent e73916992c
commit 110fd2fba1
4 changed files with 61 additions and 61 deletions

View File

@ -339,6 +339,62 @@ const char *cmGeneratorTarget::GetProperty(const std::string& prop) const
return this->Target->GetProperty(prop); return this->Target->GetProperty(prop);
} }
//----------------------------------------------------------------------------
const char* cmGeneratorTarget::GetOutputTargetType(bool implib) const
{
switch(this->GetType())
{
case cmTarget::SHARED_LIBRARY:
if(this->Target->IsDLLPlatform())
{
if(implib)
{
// A DLL import library is treated as an archive target.
return "ARCHIVE";
}
else
{
// A DLL shared library is treated as a runtime target.
return "RUNTIME";
}
}
else
{
// For non-DLL platforms shared libraries are treated as
// library targets.
return "LIBRARY";
}
case cmTarget::STATIC_LIBRARY:
// Static libraries are always treated as archive targets.
return "ARCHIVE";
case cmTarget::MODULE_LIBRARY:
if(implib)
{
// Module libraries are always treated as library targets.
return "ARCHIVE";
}
else
{
// Module import libraries are treated as archive targets.
return "LIBRARY";
}
case cmTarget::EXECUTABLE:
if(implib)
{
// Executable import libraries are treated as archive targets.
return "ARCHIVE";
}
else
{
// Executables are always treated as runtime targets.
return "RUNTIME";
}
default:
break;
}
return "";
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
std::string cmGeneratorTarget::GetOutputName(const std::string& config, std::string cmGeneratorTarget::GetOutputName(const std::string& config,
bool implib) const bool implib) const
@ -355,7 +411,7 @@ std::string cmGeneratorTarget::GetOutputName(const std::string& config,
// Compute output name. // Compute output name.
std::vector<std::string> props; std::vector<std::string> props;
std::string type = this->Target->GetOutputTargetType(implib); std::string type = this->GetOutputTargetType(implib);
std::string configUpper = cmSystemTools::UpperCase(config); std::string configUpper = cmSystemTools::UpperCase(config);
if(!type.empty() && !configUpper.empty()) if(!type.empty() && !configUpper.empty())
{ {
@ -4662,7 +4718,7 @@ bool cmGeneratorTarget::ComputeOutputDir(const std::string& config,
// Look for a target property defining the target output directory // Look for a target property defining the target output directory
// based on the target type. // based on the target type.
std::string targetTypeName = this->Target->GetOutputTargetType(implib); std::string targetTypeName = this->GetOutputTargetType(implib);
const char* propertyName = 0; const char* propertyName = 0;
std::string propertyNameStr = targetTypeName; std::string propertyNameStr = targetTypeName;
if(!propertyNameStr.empty()) if(!propertyNameStr.empty())

View File

@ -439,6 +439,9 @@ private:
typedef std::map<std::string, LinkClosure> LinkClosureMapType; typedef std::map<std::string, LinkClosure> LinkClosureMapType;
mutable LinkClosureMapType LinkClosureMap; mutable LinkClosureMapType LinkClosureMap;
// Returns ARCHIVE, LIBRARY, or RUNTIME based on platform and type.
const char* GetOutputTargetType(bool implib) const;
struct CompatibleInterfacesBase struct CompatibleInterfacesBase
{ {
std::set<std::string> PropsBool; std::set<std::string> PropsBool;

View File

@ -2271,62 +2271,6 @@ void cmTarget::SetPropertyDefault(const std::string& property,
} }
} }
//----------------------------------------------------------------------------
const char* cmTarget::GetOutputTargetType(bool implib) const
{
switch(this->GetType())
{
case cmTarget::SHARED_LIBRARY:
if(this->DLLPlatform)
{
if(implib)
{
// A DLL import library is treated as an archive target.
return "ARCHIVE";
}
else
{
// A DLL shared library is treated as a runtime target.
return "RUNTIME";
}
}
else
{
// For non-DLL platforms shared libraries are treated as
// library targets.
return "LIBRARY";
}
case cmTarget::STATIC_LIBRARY:
// Static libraries are always treated as archive targets.
return "ARCHIVE";
case cmTarget::MODULE_LIBRARY:
if(implib)
{
// Module libraries are always treated as library targets.
return "ARCHIVE";
}
else
{
// Module import libraries are treated as archive targets.
return "LIBRARY";
}
case cmTarget::EXECUTABLE:
if(implib)
{
// Executable import libraries are treated as archive targets.
return "ARCHIVE";
}
else
{
// Executables are always treated as runtime targets.
return "RUNTIME";
}
default:
break;
}
return "";
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
std::string cmTarget::GetFrameworkVersion() const std::string cmTarget::GetFrameworkVersion() const
{ {

View File

@ -415,9 +415,6 @@ private:
void SetPropertyDefault(const std::string& property, void SetPropertyDefault(const std::string& property,
const char* default_value); const char* default_value);
// Returns ARCHIVE, LIBRARY, or RUNTIME based on platform and type.
const char* GetOutputTargetType(bool implib) const;
std::string GetFullNameImported(const std::string& config, std::string GetFullNameImported(const std::string& config,
bool implib) const; bool implib) const;