diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index d3d8f3fb3..9e0064e5d 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -930,7 +930,7 @@ bool cmCacheManager::NeedCacheCompatibility(int major, int minor) // Compatibility is needed if the cache version is equal to or lower // than the given version. - unsigned int actual_compat = + cmIML_INT_uint64_t actual_compat = CMake_VERSION_ENCODE(this->CacheMajorVersion, this->CacheMinorVersion, 0); return (actual_compat && actual_compat <= CMake_VERSION_ENCODE(major, minor, 0)); diff --git a/Source/cmFindPackageCommand.h b/Source/cmFindPackageCommand.h index 7ceebb266..0d80e48e7 100644 --- a/Source/cmFindPackageCommand.h +++ b/Source/cmFindPackageCommand.h @@ -114,7 +114,7 @@ private: unsigned int VersionFoundPatch; unsigned int VersionFoundTweak; unsigned int VersionFoundCount; - unsigned int RequiredCMakeVersion; + cmIML_INT_uint64_t RequiredCMakeVersion; bool Quiet; bool Required; bool UseConfigFiles; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a2a66aeb4..b8b703581 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -3345,7 +3345,7 @@ cmLocalGenerator::GetTargetDirectory(cmTarget const&) const } //---------------------------------------------------------------------------- -unsigned int cmLocalGenerator::GetBackwardsCompatibility() +cmIML_INT_uint64_t cmLocalGenerator::GetBackwardsCompatibility() { // The computed version may change until the project is fully // configured. @@ -3398,7 +3398,7 @@ bool cmLocalGenerator::NeedBackwardsCompatibility_2_4() // Compatibility is needed if CMAKE_BACKWARDS_COMPATIBILITY is set // equal to or lower than the given version. - unsigned int actual_compat = this->GetBackwardsCompatibility(); + cmIML_INT_uint64_t actual_compat = this->GetBackwardsCompatibility(); return (actual_compat && actual_compat <= CMake_VERSION_ENCODE(2, 4, 255)); } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index ad662d58c..97648138a 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -321,7 +321,7 @@ public: * * and is monotonically increasing with the CMake version. */ - unsigned int GetBackwardsCompatibility(); + cmIML_INT_uint64_t GetBackwardsCompatibility(); /** * Test whether compatibility is set to a given version or lower. @@ -460,7 +460,7 @@ protected: bool RelativePathsConfigured; bool PathConversionsSetup; - unsigned int BackwardsCompatibility; + cmIML_INT_uint64_t BackwardsCompatibility; bool BackwardsCompatibilityFinal; private: std::string ConvertToOutputForExistingCommon(const char* remote, diff --git a/Source/cmVersion.h b/Source/cmVersion.h index e31352476..0ab639051 100644 --- a/Source/cmVersion.h +++ b/Source/cmVersion.h @@ -32,8 +32,13 @@ public: static const char* GetCMakeVersion(); }; +/* Encode with room for up to 1000 minor releases between major releases + and to encode dates until the year 10000 in the patch level. */ +#define CMake_VERSION_ENCODE__BASE cmIML_INT_UINT64_C(100000000) #define CMake_VERSION_ENCODE(major, minor, patch) \ - ((major)*0x10000u + (minor)*0x100u + (patch)) + ((((major) * 1000u) * CMake_VERSION_ENCODE__BASE) + \ + (((minor) % 1000u) * CMake_VERSION_ENCODE__BASE) + \ + (((patch) % CMake_VERSION_ENCODE__BASE))) #endif