Merge topic 'ninja-osx-versions'
9e165a64
Ninja: Add OS X dylib versioning (#14140)1f2b39c6
cmCommonTargetGenerator: Adopt AppendOSXVerFlag method
This commit is contained in:
commit
7f1c9fae38
|
@ -426,3 +426,35 @@ std::string cmCommonTargetGenerator::GetManifests()
|
|||
|
||||
return cmJoin(manifests, " ");
|
||||
}
|
||||
|
||||
void cmCommonTargetGenerator
|
||||
::AppendOSXVerFlag(std::string& flags, const std::string& lang,
|
||||
const char* name, bool so)
|
||||
{
|
||||
// Lookup the flag to specify the version.
|
||||
std::string fvar = "CMAKE_";
|
||||
fvar += lang;
|
||||
fvar += "_OSX_";
|
||||
fvar += name;
|
||||
fvar += "_VERSION_FLAG";
|
||||
const char* flag = this->Makefile->GetDefinition(fvar);
|
||||
|
||||
// Skip if no such flag.
|
||||
if(!flag)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Lookup the target version information.
|
||||
int major;
|
||||
int minor;
|
||||
int patch;
|
||||
this->GeneratorTarget->GetTargetVersion(so, major, minor, patch);
|
||||
if(major > 0 || minor > 0 || patch > 0)
|
||||
{
|
||||
// Append the flag since a non-zero version is specified.
|
||||
std::ostringstream vflag;
|
||||
vflag << flag << major << "." << minor << "." << patch;
|
||||
this->LocalGenerator->AppendFlags(flags, vflag.str());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,6 +79,9 @@ protected:
|
|||
virtual void AddIncludeFlags(std::string& flags,
|
||||
std::string const& lang) = 0;
|
||||
|
||||
void AppendOSXVerFlag(std::string& flags, const std::string& lang,
|
||||
const char* name, bool so);
|
||||
|
||||
typedef std::map<std::string, std::string> ByLanguageMap;
|
||||
std::string GetFlags(const std::string &l);
|
||||
ByLanguageMap FlagsByLanguage;
|
||||
|
|
|
@ -841,37 +841,3 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
|
|||
this->CleanFiles.insert(this->CleanFiles.end(),
|
||||
libCleanFiles.begin(),libCleanFiles.end());
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
cmMakefileLibraryTargetGenerator
|
||||
::AppendOSXVerFlag(std::string& flags, const std::string& lang,
|
||||
const char* name, bool so)
|
||||
{
|
||||
// Lookup the flag to specify the version.
|
||||
std::string fvar = "CMAKE_";
|
||||
fvar += lang;
|
||||
fvar += "_OSX_";
|
||||
fvar += name;
|
||||
fvar += "_VERSION_FLAG";
|
||||
const char* flag = this->Makefile->GetDefinition(fvar);
|
||||
|
||||
// Skip if no such flag.
|
||||
if(!flag)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Lookup the target version information.
|
||||
int major;
|
||||
int minor;
|
||||
int patch;
|
||||
this->GeneratorTarget->GetTargetVersion(so, major, minor, patch);
|
||||
if(major > 0 || minor > 0 || patch > 0)
|
||||
{
|
||||
// Append the flag since a non-zero version is specified.
|
||||
std::ostringstream vflag;
|
||||
vflag << flag << major << "." << minor << "." << patch;
|
||||
this->LocalGenerator->AppendFlags(flags, vflag.str());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,9 +38,6 @@ protected:
|
|||
|
||||
// Store the computd framework version for OS X Frameworks.
|
||||
std::string FrameworkVersion;
|
||||
|
||||
void AppendOSXVerFlag(std::string& flags, const std::string& lang,
|
||||
const char* name, bool so);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -504,6 +504,16 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
|
|||
}
|
||||
}
|
||||
|
||||
// Add OS X version flags, if any.
|
||||
if(this->GeneratorTarget->GetType() == cmState::SHARED_LIBRARY ||
|
||||
this->GeneratorTarget->GetType() == cmState::MODULE_LIBRARY)
|
||||
{
|
||||
this->AppendOSXVerFlag(vars["LINK_FLAGS"], this->TargetLinkLanguage,
|
||||
"COMPATIBILITY", true);
|
||||
this->AppendOSXVerFlag(vars["LINK_FLAGS"], this->TargetLinkLanguage,
|
||||
"CURRENT", false);
|
||||
}
|
||||
|
||||
this->addPoolNinjaVariable("JOB_POOL_LINK", >, vars);
|
||||
|
||||
this->AddModuleDefinitionFlag(vars["LINK_FLAGS"]);
|
||||
|
|
Loading…
Reference in New Issue