summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorTarget.cxx
diff options
context:
space:
mode:
authorRuslan Baratov <ruslan_baratov@yahoo.com>2017-03-28 06:47:42 (GMT)
committerBrad King <brad.king@kitware.com>2017-03-30 18:56:52 (GMT)
commitdfa8263f4be4f1413b73c81649fdc4567a71e56a (patch)
tree23e540d2dcb39793a0f9ef503e392fb854beb985 /Source/cmGeneratorTarget.cxx
parent1588a577d16cfb1a689a444b1db1df3ccff2cc3d (diff)
downloadCMake-dfa8263f4be4f1413b73c81649fdc4567a71e56a.zip
CMake-dfa8263f4be4f1413b73c81649fdc4567a71e56a.tar.gz
CMake-dfa8263f4be4f1413b73c81649fdc4567a71e56a.tar.bz2
Implement interprocedural optimization for GNU compilers
Honor the `INTERPROCEDURAL_OPTIMIZATION` target property for GNU compilers by activating their link-time-optimization (LTO) flags.
Diffstat (limited to 'Source/cmGeneratorTarget.cxx')
-rw-r--r--Source/cmGeneratorTarget.cxx23
1 files changed, 16 insertions, 7 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index bb79050..c8422d4 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -2466,19 +2466,28 @@ void cmGeneratorTarget::GetAppleArchs(const std::string& config,
}
}
+//----------------------------------------------------------------------------
+std::string cmGeneratorTarget::GetFeatureSpecificLinkRuleVariable(
+ std::string const& var, std::string const& config) const
+{
+ if (this->IsIPOEnabled(config)) {
+ std::string varIPO = var + "_IPO";
+ if (this->Makefile->IsDefinitionSet(varIPO)) {
+ return varIPO;
+ }
+ }
+
+ return var;
+}
+
+//----------------------------------------------------------------------------
std::string cmGeneratorTarget::GetCreateRuleVariable(
std::string const& lang, std::string const& config) const
{
switch (this->GetType()) {
case cmStateEnums::STATIC_LIBRARY: {
std::string var = "CMAKE_" + lang + "_CREATE_STATIC_LIBRARY";
- if (this->IsIPOEnabled(config)) {
- std::string varIPO = var + "_IPO";
- if (this->Makefile->GetDefinition(varIPO)) {
- return varIPO;
- }
- }
- return var;
+ return this->GetFeatureSpecificLinkRuleVariable(var, config);
}
case cmStateEnums::SHARED_LIBRARY:
return "CMAKE_" + lang + "_CREATE_SHARED_LIBRARY";