diff options
author | Brad King <brad.king@kitware.com> | 2011-12-01 21:21:25 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-12-06 19:19:44 (GMT) |
commit | 96f65ba68e82b64eac67b75282bbcab8103c0eb0 (patch) | |
tree | f3bd1e3e25df56e2c3ba124730ba0ba199d60e9d /Source/cmTarget.cxx | |
parent | 9401da808446b1746c75e81b9b6056b96a122fe9 (diff) | |
download | CMake-96f65ba68e82b64eac67b75282bbcab8103c0eb0.zip CMake-96f65ba68e82b64eac67b75282bbcab8103c0eb0.tar.gz CMake-96f65ba68e82b64eac67b75282bbcab8103c0eb0.tar.bz2 |
cmTarget: Create helper method for versioned library names
Replace the duplicate logic for the realName and soName of versioned
shared libraries with calls to a new ComputeVersionedName method.
Diffstat (limited to 'Source/cmTarget.cxx')
-rw-r--r-- | Source/cmTarget.cxx | 70 |
1 files changed, 30 insertions, 40 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index d021990..014c38f 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -131,6 +131,7 @@ cmTarget::cmTarget() this->LinkLibrariesAnalyzed = false; this->HaveInstallRule = false; this->DLLPlatform = false; + this->IsApple = false; this->IsImportedTarget = false; } @@ -1207,6 +1208,9 @@ void cmTarget::SetMakefile(cmMakefile* mf) this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("MINGW")); + // Check whether we are targeting an Apple platform. + this->IsApple = this->Makefile->IsOn("APPLE"); + // Setup default property values. this->SetPropertyDefault("INSTALL_NAME_DIR", ""); this->SetPropertyDefault("INSTALL_RPATH", ""); @@ -3348,7 +3352,11 @@ void cmTarget::GetLibraryNames(std::string& name, // the library version as the soversion. soversion = version; } - bool isApple = this->Makefile->IsOn("APPLE"); + if(!version && soversion) + { + // Use the soversion as the library version. + version = soversion; + } // Get the components of the library name. std::string prefix; @@ -3360,47 +3368,12 @@ void cmTarget::GetLibraryNames(std::string& name, name = prefix+base+suffix; // The library's soname. - if(isApple) - { - soName = prefix+base; - } - else - { - soName = name; - } - if(soversion) - { - soName += "."; - soName += soversion; - } - if(isApple) - { - soName += suffix; - } + this->ComputeVersionedName(soName, prefix, base, suffix, + name, soversion); // The library's real name on disk. - if(isApple) - { - realName = prefix+base; - } - else - { - realName = name; - } - if(version) - { - realName += "."; - realName += version; - } - else if(soversion) - { - realName += "."; - realName += soversion; - } - if(isApple) - { - realName += suffix; - } + this->ComputeVersionedName(realName, prefix, base, suffix, + name, version); // The import library name. if(this->GetType() == cmTarget::SHARED_LIBRARY || @@ -3418,6 +3391,23 @@ void cmTarget::GetLibraryNames(std::string& name, } //---------------------------------------------------------------------------- +void cmTarget::ComputeVersionedName(std::string& vName, + std::string const& prefix, + std::string const& base, + std::string const& suffix, + std::string const& name, + const char* version) +{ + vName = this->IsApple? (prefix+base) : name; + if(version) + { + vName += "."; + vName += version; + } + vName += this->IsApple? suffix : std::string(); +} + +//---------------------------------------------------------------------------- void cmTarget::GetExecutableNames(std::string& name, std::string& realName, std::string& impName, |