Xcode: Fix static library creation for Xcode 6 (#15038)
Xcode 6 introduced an 'OTHER_LIBTOOLFLAGS' setting for the "Other Librarian Flags" of a static library. Now 'OTHER_LDFLAGS' are ignored. Teach the Xcode generator to choose the correct name for the build setting based on the type of target and the version of Xcode. Inspired-by: Jamie Kirkpatrick <jkp@spotify.com>
This commit is contained in:
parent
55d6aa36a5
commit
608cf8149c
|
@ -2298,7 +2298,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildSettings->AddAttribute("OTHER_LDFLAGS",
|
buildSettings->AddAttribute(this->GetTargetLinkFlagsVar(target),
|
||||||
this->CreateString(extraLinkOptions.c_str()));
|
this->CreateString(extraLinkOptions.c_str()));
|
||||||
buildSettings->AddAttribute("OTHER_REZFLAGS",
|
buildSettings->AddAttribute("OTHER_REZFLAGS",
|
||||||
this->CreateString(""));
|
this->CreateString(""));
|
||||||
|
@ -2521,6 +2521,22 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
const char*
|
||||||
|
cmGlobalXCodeGenerator::GetTargetLinkFlagsVar(cmTarget const& cmtarget) const
|
||||||
|
{
|
||||||
|
if(this->XcodeVersion >= 60 &&
|
||||||
|
(cmtarget.GetType() == cmTarget::STATIC_LIBRARY ||
|
||||||
|
cmtarget.GetType() == cmTarget::OBJECT_LIBRARY))
|
||||||
|
{
|
||||||
|
return "OTHER_LIBTOOLFLAGS";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "OTHER_LDFLAGS";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmGlobalXCodeGenerator::GetTargetFileType(cmTarget& cmtarget)
|
const char* cmGlobalXCodeGenerator::GetTargetFileType(cmTarget& cmtarget)
|
||||||
{
|
{
|
||||||
|
@ -2834,8 +2850,9 @@ void cmGlobalXCodeGenerator
|
||||||
sep = " ";
|
sep = " ";
|
||||||
linkObjs += this->XCodeEscapePath(oi->c_str());
|
linkObjs += this->XCodeEscapePath(oi->c_str());
|
||||||
}
|
}
|
||||||
this->AppendBuildSettingAttribute(target, "OTHER_LDFLAGS",
|
this->AppendBuildSettingAttribute(
|
||||||
linkObjs.c_str(), configName);
|
target, this->GetTargetLinkFlagsVar(*cmtarget),
|
||||||
|
linkObjs.c_str(), configName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip link information for object libraries.
|
// Skip link information for object libraries.
|
||||||
|
@ -2913,8 +2930,9 @@ void cmGlobalXCodeGenerator
|
||||||
target->AddDependTarget(configName, li->Target->GetName());
|
target->AddDependTarget(configName, li->Target->GetName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->AppendBuildSettingAttribute(target, "OTHER_LDFLAGS",
|
this->AppendBuildSettingAttribute(
|
||||||
linkLibs.c_str(), configName);
|
target, this->GetTargetLinkFlagsVar(*cmtarget),
|
||||||
|
linkLibs.c_str(), configName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,6 +141,7 @@ private:
|
||||||
cmXCodeObject* buildPhases);
|
cmXCodeObject* buildPhases);
|
||||||
void ForceLinkerLanguages();
|
void ForceLinkerLanguages();
|
||||||
void ForceLinkerLanguage(cmTarget& cmtarget);
|
void ForceLinkerLanguage(cmTarget& cmtarget);
|
||||||
|
const char* GetTargetLinkFlagsVar(cmTarget const& cmtarget) const;
|
||||||
const char* GetTargetFileType(cmTarget& cmtarget);
|
const char* GetTargetFileType(cmTarget& cmtarget);
|
||||||
const char* GetTargetProductType(cmTarget& cmtarget);
|
const char* GetTargetProductType(cmTarget& cmtarget);
|
||||||
std::string AddConfigurations(cmXCodeObject* target, cmTarget& cmtarget);
|
std::string AddConfigurations(cmXCodeObject* target, cmTarget& cmtarget);
|
||||||
|
|
Loading…
Reference in New Issue