diff --git a/cmake/Eigen3ConfigVersion.cmake.in b/cmake/Eigen3ConfigVersion.cmake.in index b680c63a0dd6025c98e36d8e98e7d1700ffd761f..dbbb5b5ef9f2291627b2568f433013c783ba2b62 100644 --- a/cmake/Eigen3ConfigVersion.cmake.in +++ b/cmake/Eigen3ConfigVersion.cmake.in @@ -1,5 +1,5 @@ # This is a CMake version file for the Config-mode of find_package(). -# +# # The version constraint is compatible with the current package under the # following conditions: # - If a version range is specified, the package version falls within the @@ -12,7 +12,8 @@ # - 3...<5 matches 3.0.0.0 to <5.0.0.0 # - 3...<5.1 matches 3.0.0.0 to <5.1.0.0 # - 3 matches 3.0.0.0 to <4.0.0.0 -# - 3.4 matches 3.4.0.0 to <3.5.0.0 +# - 3.4 matches 3.4.0.0 to <4.0.0.0 due to semantic versioning +# - 3.4 EXACT matches 3.4.0.0 to <3.5.0.0 set(PACKAGE_VERSION "@CVF_VERSION@") @@ -65,26 +66,30 @@ if (PACKAGE_FIND_VERSION_RANGE) set(PACKAGE_VERSION_COMPATIBLE TRUE) endif() else() - # Create exclusive upper bound. + + # Semantic versioning upper bound. + math(EXPR _PACKAGE_FIND_VERSION_MAJOR "${PACKAGE_FIND_VERSION_MAJOR}+1") + set(_PACKAGE_FIND_VERSION_SEMVER_UPPER "${_PACKAGE_FIND_VERSION_MAJOR}.0.0.0") + + # Create exclusive upper bound for exact match. if (PACKAGE_FIND_VERSION_COUNT EQUAL 1) - math(EXPR _PACKAGE_FIND_VERSION_MAJOR "${PACKAGE_FIND_VERSION_MAJOR}+1") - set(_PACKAGE_FIND_VERSION_UPPER "${_PACKAGE_FIND_VERSION_MAJOR}.0.0.0") + set(_PACKAGE_FIND_VERSION_EXACT_UPPER "${_PACKAGE_FIND_VERSION_SEMVER_UPPER}") elseif (PACKAGE_FIND_VERSION_COUNT EQUAL 2) math(EXPR _PACKAGE_FIND_VERSION_MINOR "${PACKAGE_FIND_VERSION_MINOR}+1") - set(_PACKAGE_FIND_VERSION_UPPER "${PACKAGE_FIND_VERSION_MAJOR}.${_PACKAGE_FIND_VERSION_MINOR}.0.0") + set(_PACKAGE_FIND_VERSION_EXACT_UPPER "${PACKAGE_FIND_VERSION_MAJOR}.${_PACKAGE_FIND_VERSION_MINOR}.0.0") elseif (PACKAGE_FIND_VERSION_COUNT EQUAL 3) math(EXPR _PACKAGE_FIND_VERSION_PATCH "${PACKAGE_FIND_VERSION_PATCH}+1") - set(_PACKAGE_FIND_VERSION_UPPER "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}.${_PACKAGE_FIND_VERSION_PATCH}.0") + set(_PACKAGE_FIND_VERSION_EXACT_UPPER "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}.${_PACKAGE_FIND_VERSION_PATCH}.0") elseif (PACKAGE_FIND_VERSION_COUNT EQUAL 4) math(EXPR _PACKAGE_FIND_VERSION_TWEAK "${PACKAGE_FIND_VERSION_TWEAK}+1") - set(_PACKAGE_FIND_VERSION_UPPER "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}.${PACKAGE_FIND_VERSION_PATCH}.${_PACKAGE_FIND_VERSION_TWEAK}") + set(_PACKAGE_FIND_VERSION_EXACT_UPPER "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}.${PACKAGE_FIND_VERSION_PATCH}.${_PACKAGE_FIND_VERSION_TWEAK}") endif() - if((_PACKAGE_VERSION_FULL VERSION_LESS PACKAGE_FIND_VERSION) OR (_PACKAGE_VERSION_FULL VERSION_GREATER_EQUAL _PACKAGE_FIND_VERSION_UPPER)) + if((_PACKAGE_VERSION_FULL VERSION_LESS PACKAGE_FIND_VERSION) OR (_PACKAGE_VERSION_FULL VERSION_GREATER_EQUAL _PACKAGE_FIND_VERSION_SEMVER_UPPER)) set(PACKAGE_VERSION_COMPATIBLE FALSE) else() set(PACKAGE_VERSION_COMPATIBLE TRUE) - if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + if(_PACKAGE_VERSION_FULL VERSION_LESS _PACKAGE_FIND_VERSION_EXACT_UPPER) set(PACKAGE_VERSION_EXACT TRUE) endif() endif()