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, " ");
|
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,
|
virtual void AddIncludeFlags(std::string& flags,
|
||||||
std::string const& lang) = 0;
|
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;
|
typedef std::map<std::string, std::string> ByLanguageMap;
|
||||||
std::string GetFlags(const std::string &l);
|
std::string GetFlags(const std::string &l);
|
||||||
ByLanguageMap FlagsByLanguage;
|
ByLanguageMap FlagsByLanguage;
|
||||||
|
|
|
@ -841,37 +841,3 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
|
||||||
this->CleanFiles.insert(this->CleanFiles.end(),
|
this->CleanFiles.insert(this->CleanFiles.end(),
|
||||||
libCleanFiles.begin(),libCleanFiles.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.
|
// Store the computd framework version for OS X Frameworks.
|
||||||
std::string FrameworkVersion;
|
std::string FrameworkVersion;
|
||||||
|
|
||||||
void AppendOSXVerFlag(std::string& flags, const std::string& lang,
|
|
||||||
const char* name, bool so);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#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->addPoolNinjaVariable("JOB_POOL_LINK", >, vars);
|
||||||
|
|
||||||
this->AddModuleDefinitionFlag(vars["LINK_FLAGS"]);
|
this->AddModuleDefinitionFlag(vars["LINK_FLAGS"]);
|
||||||
|
|
Loading…
Reference in New Issue