diff options
author | Brad King <brad.king@kitware.com> | 2016-03-08 13:39:40 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2016-03-08 13:39:40 (GMT) |
commit | 7f1c9fae3899be28cfb8e15aac643f9143da85a6 (patch) | |
tree | 25a0f9adcf878975f9f401347784e76eca5e4617 | |
parent | a6e6f93b6c32c941e2ccc91c754812df049f9832 (diff) | |
parent | 9e165a64addbf997d5af58caccd2c93ec2c77a95 (diff) | |
download | CMake-7f1c9fae3899be28cfb8e15aac643f9143da85a6.zip CMake-7f1c9fae3899be28cfb8e15aac643f9143da85a6.tar.gz CMake-7f1c9fae3899be28cfb8e15aac643f9143da85a6.tar.bz2 |
Merge topic 'ninja-osx-versions'
9e165a64 Ninja: Add OS X dylib versioning (#14140)
1f2b39c6 cmCommonTargetGenerator: Adopt AppendOSXVerFlag method
-rw-r--r-- | Source/cmCommonTargetGenerator.cxx | 32 | ||||
-rw-r--r-- | Source/cmCommonTargetGenerator.h | 3 | ||||
-rw-r--r-- | Source/cmMakefileLibraryTargetGenerator.cxx | 34 | ||||
-rw-r--r-- | Source/cmMakefileLibraryTargetGenerator.h | 3 | ||||
-rw-r--r-- | Source/cmNinjaNormalTargetGenerator.cxx | 10 |
5 files changed, 45 insertions, 37 deletions
diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx index 76ed038..b5688a8 100644 --- a/Source/cmCommonTargetGenerator.cxx +++ b/Source/cmCommonTargetGenerator.cxx @@ -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()); + } +} diff --git a/Source/cmCommonTargetGenerator.h b/Source/cmCommonTargetGenerator.h index 0c17500..bfb6b79 100644 --- a/Source/cmCommonTargetGenerator.h +++ b/Source/cmCommonTargetGenerator.h @@ -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; diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 1923ea4..435844e 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -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()); - } -} diff --git a/Source/cmMakefileLibraryTargetGenerator.h b/Source/cmMakefileLibraryTargetGenerator.h index 68980c3..009f15d 100644 --- a/Source/cmMakefileLibraryTargetGenerator.h +++ b/Source/cmMakefileLibraryTargetGenerator.h @@ -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 diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 17561b5..c34df3c 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -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"]); |