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_RUNTIME_C_FLAG_SEP ":")
SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,") SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-soname,") SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-soname,")
SET(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG "-Wl,-soname,")
INCLUDE(Platform/UnixPaths) INCLUDE(Platform/UnixPaths)

View File

@ -81,16 +81,25 @@ void cmInstallTargetGenerator::GenerateScript(std::ostream& os)
{ {
// Add shared library installation properties if this platform // Add shared library installation properties if this platform
// supports them. // supports them.
const char* lib_version = this->Target->GetProperty("VERSION"); const char* lib_version = 0;
const char* lib_soversion = this->Target->GetProperty("SOVERSION"); const char* lib_soversion = 0;
if(!this->Target->GetMakefile()
->GetDefinition("CMAKE_SHARED_LIBRARY_SONAME_C_FLAG")) // 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, std::string sonameFlagVar = "CMAKE_SHARED_LIBRARY_SONAME_";
// and then only when the platform supports an soname flag. sonameFlagVar += linkLanguage;
lib_version = 0; sonameFlagVar += "_FLAG";
lib_soversion = 0; if(this->Target->GetMakefile()->GetDefinition(sonameFlagVar.c_str()))
{
lib_version = this->Target->GetProperty("VERSION");
lib_soversion = this->Target->GetProperty("SOVERSION");
}
} }
if(lib_version) if(lib_version)
{ {
props += " VERSION "; props += " VERSION ";