Browse Source

Add IPO compiler flags more consistently in generators

Move addition of IPO flags into `cmLocalGenerator::AddLanguageFlags`
because all call sites of that need the IPO flags, but not all were
following the call with `AppendFeatureOptions`.
pull/304/head
Brad King 8 years ago
parent
commit
a8667467ea
  1. 7
      Source/cmCommonTargetGenerator.cxx
  2. 8
      Source/cmGhsMultiTargetGenerator.cxx
  3. 3
      Source/cmGlobalXCodeGenerator.cxx
  4. 13
      Source/cmLocalGenerator.cxx
  5. 4
      Source/cmLocalGenerator.h
  6. 4
      Source/cmNinjaNormalTargetGenerator.cxx

7
Source/cmCommonTargetGenerator.cxx

@ -47,11 +47,8 @@ void cmCommonTargetGenerator::AddFeatureFlags(std::string& flags,
const std::string& lang)
{
// Add language-specific flags.
this->LocalGenerator->AddLanguageFlags(flags, lang, this->ConfigName);
if (this->GeneratorTarget->IsIPOEnabled(this->ConfigName)) {
this->LocalGenerator->AppendFeatureOptions(flags, lang, "IPO");
}
this->LocalGenerator->AddLanguageFlags(flags, this->GeneratorTarget, lang,
this->ConfigName);
}
void cmCommonTargetGenerator::AddModuleDefinitionFlag(

8
Source/cmGhsMultiTargetGenerator.cxx

@ -232,10 +232,12 @@ void cmGhsMultiTargetGenerator::SetCompilerFlags(std::string const& config,
const char* lang = language.c_str();
if (notKernel) {
this->LocalGenerator->AddLanguageFlags(flags, lang, config);
this->LocalGenerator->AddLanguageFlags(flags, this->GeneratorTarget,
lang, config);
} else {
this->LocalGenerator->AddLanguageFlags(
flags, lang + std::string("_GHS_KERNEL"), config);
this->LocalGenerator->AddLanguageFlags(flags, this->GeneratorTarget,
lang + std::string("_GHS_KERNEL"),
config);
}
this->LocalGenerator->AddCMP0018Flags(flags, this->GeneratorTarget, lang,
config);

3
Source/cmGlobalXCodeGenerator.cxx

@ -1662,7 +1662,8 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
std::string& flags = cflags[lang];
// Add language-specific flags.
this->CurrentLocalGenerator->AddLanguageFlags(flags, lang, configName);
this->CurrentLocalGenerator->AddLanguageFlags(flags, gtgt, lang,
configName);
// Add shared-library flags if needed.
this->CurrentLocalGenerator->AddCMP0018Flags(flags, gtgt, lang,

13
Source/cmLocalGenerator.cxx

@ -985,7 +985,7 @@ void cmLocalGenerator::GetTargetFlags(
target->GetName().c_str());
return;
}
this->AddLanguageFlags(flags, linkLanguage, buildType);
this->AddLanguageFlags(flags, target, linkLanguage, buildType);
if (pcli) {
this->OutputLinkLibraries(pcli, linkLineComputer, linkLibs,
frameworkPath, linkPath);
@ -1050,11 +1050,7 @@ void cmLocalGenerator::GetTargetCompileFlags(cmGeneratorTarget* target,
cmMakefile* mf = this->GetMakefile();
// Add language-specific flags.
this->AddLanguageFlags(flags, lang, config);
if (target->IsIPOEnabled(config)) {
this->AppendFeatureOptions(flags, lang, "IPO");
}
this->AddLanguageFlags(flags, target, lang, config);
this->AddArchitectureFlags(flags, target, lang, config);
@ -1287,6 +1283,7 @@ void cmLocalGenerator::AddArchitectureFlags(std::string& flags,
}
void cmLocalGenerator::AddLanguageFlags(std::string& flags,
cmGeneratorTarget const* target,
const std::string& lang,
const std::string& config)
{
@ -1295,6 +1292,10 @@ void cmLocalGenerator::AddLanguageFlags(std::string& flags,
flagsVar += lang;
flagsVar += "_FLAGS";
this->AddConfigVariableFlags(flags, flagsVar, config);
if (target->IsIPOEnabled(config)) {
this->AppendFeatureOptions(flags, lang, "IPO");
}
}
cmGeneratorTarget* cmLocalGenerator::FindGeneratorTargetToUse(

4
Source/cmLocalGenerator.h

@ -98,8 +98,8 @@ public:
const std::string& lang,
const std::string& config);
void AddLanguageFlags(std::string& flags, const std::string& lang,
const std::string& config);
void AddLanguageFlags(std::string& flags, cmGeneratorTarget const* target,
const std::string& lang, const std::string& config);
void AddCMP0018Flags(std::string& flags, cmGeneratorTarget const* target,
std::string const& lang, const std::string& config);
void AddVisibilityPresetFlags(std::string& flags,

4
Source/cmNinjaNormalTargetGenerator.cxx

@ -655,7 +655,7 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement()
localGen.AddArchitectureFlags(t, &genTarget, cudaLinkLanguage, cfgName);
vars["ARCH_FLAGS"] = t;
t = "";
localGen.AddLanguageFlags(t, cudaLinkLanguage, cfgName);
localGen.AddLanguageFlags(t, &genTarget, cudaLinkLanguage, cfgName);
vars["LANGUAGE_COMPILE_FLAGS"] = t;
}
if (this->GetGeneratorTarget()->HasSOName(cfgName)) {
@ -874,7 +874,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
vars["ARCH_FLAGS"] = t;
t = "";
t += lwyuFlags;
localGen.AddLanguageFlags(t, TargetLinkLanguage, cfgName);
localGen.AddLanguageFlags(t, &genTarget, TargetLinkLanguage, cfgName);
vars["LANGUAGE_COMPILE_FLAGS"] = t;
}
if (this->GetGeneratorTarget()->HasSOName(cfgName)) {

Loading…
Cancel
Save