diff options
author | Brad King <brad.king@kitware.com> | 2007-12-29 04:07:14 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2007-12-29 04:07:14 (GMT) |
commit | f872c10b7ee3fe675e7a2066c20c7a749efd8238 (patch) | |
tree | aa6934ecef4eb491977fc8b3fafeede0984a954d /Source/cmLocalGenerator.cxx | |
parent | 2da186266e3d46e9a3e9f0eebb106fe507cb5df5 (diff) | |
download | CMake-f872c10b7ee3fe675e7a2066c20c7a749efd8238.zip CMake-f872c10b7ee3fe675e7a2066c20c7a749efd8238.tar.gz CMake-f872c10b7ee3fe675e7a2066c20c7a749efd8238.tar.bz2 |
ENH: Added method cmLocalGenerator::GetBackwardsCompatibility to reduce parsing of CMAKE_BACKWARDS_COMPATIBILITY variable. Add cmLocalGenerator::NeedBackwardsCompatibility to simplify checks for compatibility requirements.
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r-- | Source/cmLocalGenerator.cxx | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 3e1436f..78db8ed 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -56,6 +56,8 @@ cmLocalGenerator::cmLocalGenerator() this->IsMakefileGenerator = false; this->RelativePathsConfigured = false; this->PathConversionsSetup = false; + this->BackwardsCompatibility = 0; + this->BackwardsCompatibilityFinal = false; } cmLocalGenerator::~cmLocalGenerator() @@ -2860,3 +2862,42 @@ cmLocalGenerator::GetTargetObjectFileDirectories(cmTarget* , cmSystemTools::Error("GetTargetObjectFileDirectories" " called on cmLocalGenerator"); } + +//---------------------------------------------------------------------------- +unsigned int cmLocalGenerator::GetBackwardsCompatibility() +{ + // The computed version may change until the project is fully + // configured. + if(!this->BackwardsCompatibilityFinal) + { + unsigned int major = 0; + unsigned int minor = 0; + unsigned int patch = 0; + if(const char* value + = this->Makefile->GetDefinition("CMAKE_BACKWARDS_COMPATIBILITY")) + { + switch(sscanf(value, "%u.%u.%u", &major, &minor, &patch)) + { + case 2: patch = 0; break; + case 1: minor = 0; patch = 0; break; + default: break; + } + } + this->BackwardsCompatibility = CMake_VERSION_ENCODE(major, minor, patch); + this->BackwardsCompatibilityFinal = this->Configured; + } + + return this->BackwardsCompatibility; +} + +//---------------------------------------------------------------------------- +bool cmLocalGenerator::NeedBackwardsCompatibility(unsigned int major, + unsigned int minor, + unsigned int patch) +{ + // Compatibility is needed if CMAKE_BACKWARDS_COMPATIBILITY is set + // equal to or lower than the given version. + unsigned int actual_compat = this->GetBackwardsCompatibility(); + return (actual_compat && + actual_compat <= CMake_VERSION_ENCODE(major, minor, patch)); +} |