cmCommonTargetGenerator: Adopt GetFeature and friends

De-duplicate the GetFeature, GetFeatureAsBool, and AddFeatureFlags
members from the Makefile and Ninja target generators.
This commit is contained in:
Brad King 2015-07-08 14:49:04 -04:00
parent abfa5f2d1f
commit beee793732
6 changed files with 34 additions and 63 deletions

View File

@ -35,3 +35,29 @@ std::string const& cmCommonTargetGenerator::GetConfigName() const
{ {
return this->ConfigName; return this->ConfigName;
} }
//----------------------------------------------------------------------------
const char* cmCommonTargetGenerator::GetFeature(const std::string& feature)
{
return this->GeneratorTarget->GetFeature(feature, this->ConfigName);
}
//----------------------------------------------------------------------------
bool cmCommonTargetGenerator::GetFeatureAsBool(const std::string& feature)
{
return this->GeneratorTarget->GetFeatureAsBool(feature, this->ConfigName);
}
//----------------------------------------------------------------------------
void cmCommonTargetGenerator::AddFeatureFlags(
std::string& flags, const std::string& lang
)
{
// Add language-specific flags.
this->LocalGenerator->AddLanguageFlags(flags, lang, this->ConfigName);
if(this->GetFeatureAsBool("INTERPROCEDURAL_OPTIMIZATION"))
{
this->LocalGenerator->AppendFeatureOptions(flags, lang, "IPO");
}
}

View File

@ -32,6 +32,14 @@ public:
std::string const& GetConfigName() const; std::string const& GetConfigName() const;
protected: protected:
// Add language feature flags.
void AddFeatureFlags(std::string& flags, const std::string& lang);
// Feature query methods.
const char* GetFeature(const std::string& feature);
bool GetFeatureAsBool(const std::string& feature);
cmGeneratorTarget* GeneratorTarget; cmGeneratorTarget* GeneratorTarget;
cmTarget* Target; cmTarget* Target;
cmMakefile* Makefile; cmMakefile* Makefile;

View File

@ -2099,29 +2099,3 @@ void cmMakefileTargetGenerator::AddModuleDefinitionFlag(std::string& flags)
flag += (this->LocalGenerator->ConvertToLinkReference(def)); flag += (this->LocalGenerator->ConvertToLinkReference(def));
this->LocalGenerator->AppendFlags(flags, flag); this->LocalGenerator->AppendFlags(flags, flag);
} }
//----------------------------------------------------------------------------
const char* cmMakefileTargetGenerator::GetFeature(const std::string& feature)
{
return this->GeneratorTarget->GetFeature(feature, this->ConfigName);
}
//----------------------------------------------------------------------------
bool cmMakefileTargetGenerator::GetFeatureAsBool(const std::string& feature)
{
return this->GeneratorTarget->GetFeatureAsBool(feature, this->ConfigName);
}
//----------------------------------------------------------------------------
void cmMakefileTargetGenerator::AddFeatureFlags(
std::string& flags, const std::string& lang
)
{
// Add language-specific flags.
this->LocalGenerator->AddLanguageFlags(flags, lang, this->ConfigName);
if(this->GetFeatureAsBool("INTERPROCEDURAL_OPTIMIZATION"))
{
this->LocalGenerator->AppendFeatureOptions(flags, lang, "IPO");
}
}

View File

@ -258,13 +258,6 @@ protected:
// Helper to add flag for windows .def file. // Helper to add flag for windows .def file.
void AddModuleDefinitionFlag(std::string& flags); void AddModuleDefinitionFlag(std::string& flags);
// Add language feature flags.
void AddFeatureFlags(std::string& flags, const std::string& lang);
// Feature query methods.
const char* GetFeature(const std::string& feature);
bool GetFeatureAsBool(const std::string& feature);
//================================================================== //==================================================================
// Convenience routines that do nothing more than forward to // Convenience routines that do nothing more than forward to
// implementaitons // implementaitons

View File

@ -96,32 +96,6 @@ std::string cmNinjaTargetGenerator::LanguageCompilerRule(
cmGlobalNinjaGenerator::EncodeRuleName(this->Target->GetName()); cmGlobalNinjaGenerator::EncodeRuleName(this->Target->GetName());
} }
// TODO: Picked up from cmMakefileTargetGenerator. Refactor it.
const char* cmNinjaTargetGenerator::GetFeature(const std::string& feature)
{
return this->GeneratorTarget->GetFeature(feature, this->GetConfigName());
}
// TODO: Picked up from cmMakefileTargetGenerator. Refactor it.
bool cmNinjaTargetGenerator::GetFeatureAsBool(const std::string& feature)
{
return this->GeneratorTarget->GetFeatureAsBool(feature,
this->GetConfigName());
}
// TODO: Picked up from cmMakefileTargetGenerator. Refactor it.
void cmNinjaTargetGenerator::AddFeatureFlags(std::string& flags,
const std::string& lang)
{
// Add language-specific flags.
this->LocalGenerator->AddLanguageFlags(flags, lang, this->GetConfigName());
if(this->GetFeatureAsBool("INTERPROCEDURAL_OPTIMIZATION"))
{
this->LocalGenerator->AppendFeatureOptions(flags, lang, "IPO");
}
}
std::string std::string
cmNinjaTargetGenerator::OrderDependsTargetForTarget() cmNinjaTargetGenerator::OrderDependsTargetForTarget()
{ {

View File

@ -69,10 +69,6 @@ protected:
std::string LanguageCompilerRule(const std::string& lang) const; std::string LanguageCompilerRule(const std::string& lang) const;
const char* GetFeature(const std::string& feature);
bool GetFeatureAsBool(const std::string& feature);
void AddFeatureFlags(std::string& flags, const std::string& lang);
std::string OrderDependsTargetForTarget(); std::string OrderDependsTargetForTarget();
std::string ComputeOrderDependsForTarget(); std::string ComputeOrderDependsForTarget();