BUG: Fixed shared library version support for Fortran. This addresses bug#3558.

This commit is contained in:
Brad King 2006-08-01 15:36:49 -04:00
parent e0e32400af
commit c9506c30f0
2 changed files with 18 additions and 8 deletions

View File

@ -7,4 +7,5 @@ SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-soname,")
SET(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG "-Wl,-soname,")
INCLUDE(Platform/UnixPaths)

View File

@ -81,16 +81,25 @@ void cmInstallTargetGenerator::GenerateScript(std::ostream& os)
{
// Add shared library installation properties if this platform
// supports them.
const char* lib_version = this->Target->GetProperty("VERSION");
const char* lib_soversion = this->Target->GetProperty("SOVERSION");
if(!this->Target->GetMakefile()
->GetDefinition("CMAKE_SHARED_LIBRARY_SONAME_C_FLAG"))
const char* lib_version = 0;
const char* lib_soversion = 0;
// Versioning is supported only for shared libraries and modules,
// and then only when the platform supports an soname flag.
cmGlobalGenerator* gg =
this->Target->GetMakefile()->GetLocalGenerator()->GetGlobalGenerator();
if(const char* linkLanguage = this->Target->GetLinkerLanguage(gg))
{
// Versioning is supported only for shared libraries and modules,
// and then only when the platform supports an soname flag.
lib_version = 0;
lib_soversion = 0;
std::string sonameFlagVar = "CMAKE_SHARED_LIBRARY_SONAME_";
sonameFlagVar += linkLanguage;
sonameFlagVar += "_FLAG";
if(this->Target->GetMakefile()->GetDefinition(sonameFlagVar.c_str()))
{
lib_version = this->Target->GetProperty("VERSION");
lib_soversion = this->Target->GetProperty("SOVERSION");
}
}
if(lib_version)
{
props += " VERSION ";