| # 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 |
| # range up to the supplied version components. |
| # - If a single version is specified, the current package version matches |
| # only the requested version components. |
| # |
| # Examples: |
| # - 3...5 matches 3.0.0.0 to <6.0.0.0 |
| # - 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 <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@") |
| |
| # Extract version components. |
| if ("${PACKAGE_VERSION}" MATCHES "^([0-9]+)(\\.([0-9]+))?(\\.([0-9]+))?(\\.([0-9]+))?$") |
| set(_PACKAGE_VERSION_MAJOR "${CMAKE_MATCH_1}") |
| if (DEFINED CMAKE_MATCH_3) |
| set(_PACKAGE_VERSION_MINOR "${CMAKE_MATCH_3}") |
| else() |
| set(_PACKAGE_VERSION_MINOR "0") |
| endif() |
| if (DEFINED CMAKE_MATCH_5) |
| set(_PACKAGE_VERSION_PATCH "${CMAKE_MATCH_5}") |
| else() |
| set(_PACKAGE_VERSION_PATCH "0") |
| endif() |
| if (DEFINED CMAKE_MATCH_7) |
| set(_PACKAGE_VERSION_TWEAK "${CMAKE_MATCH_7}") |
| else() |
| set(_PACKAGE_VERSION_TWEAK "0") |
| endif() |
| set(_PACKAGE_VERSION_FULL "${_PACKAGE_VERSION_MAJOR}.${_PACKAGE_VERSION_MINOR}.${_PACKAGE_VERSION_PATCH}.${_PACKAGE_VERSION_TWEAK}") |
| endif() |
| |
| if (PACKAGE_FIND_VERSION_RANGE) |
| # Create exclusive bound for the range maximum. |
| if (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE") |
| set(_PACKAGE_FIND_VERSION_UPPER "${PACKAGE_FIND_VERSION_MAX_MAJOR}.${PACKAGE_FIND_VERSION_MAX_MINOR}.${PACKAGE_FIND_VERSION_MAX_PATCH}.${PACKAGE_FIND_VERSION_MAX_TWEAK}") |
| else() |
| # Increment the last supplied version number. |
| if (PACKAGE_FIND_VERSION_MAX_COUNT EQUAL 1) |
| math(EXPR _PACKAGE_FIND_VERSION_MAX_MAJOR "${PACKAGE_FIND_VERSION_MAX_MAJOR}+1") |
| set(_PACKAGE_FIND_VERSION_UPPER "${_PACKAGE_FIND_VERSION_MAX_MAJOR}.0.0.0") |
| elseif (PACKAGE_FIND_VERSION_MAX_COUNT EQUAL 2) |
| math(EXPR _PACKAGE_FIND_VERSION_MAX_MINOR "${PACKAGE_FIND_VERSION_MAX_MINOR}+1") |
| set(_PACKAGE_FIND_VERSION_UPPER "${PACKAGE_FIND_VERSION_MAX_MAJOR}.${_PACKAGE_FIND_VERSION_MAX_MINOR}.0.0") |
| elseif (PACKAGE_FIND_VERSION_MAX_COUNT EQUAL 3) |
| math(EXPR _PACKAGE_FIND_VERSION_MAX_PATCH "${PACKAGE_FIND_VERSION_MAX_PATCH}+1") |
| set(_PACKAGE_FIND_VERSION_UPPER "${PACKAGE_FIND_VERSION_MAX_MAJOR}.${PACKAGE_FIND_VERSION_MAX_MINOR}.${_PACKAGE_FIND_VERSION_MAX_PATCH}.0") |
| elseif (PACKAGE_FIND_VERSION_MAX_COUNT EQUAL 4) |
| math(EXPR _PACKAGE_FIND_VERSION_MAX_TWEAK "${PACKAGE_FIND_VERSION_MAX_TWEAK}+1") |
| set(_PACKAGE_FIND_VERSION_UPPER "${PACKAGE_FIND_VERSION_MAX_MAJOR}.${PACKAGE_FIND_VERSION_MAX_MINOR}.${PACKAGE_FIND_VERSION_MAX_PATCH}.${_PACKAGE_FIND_VERSION_MAX_TWEAK}") |
| endif() |
| endif() |
| |
| if ((_PACKAGE_VERSION_FULL VERSION_LESS PACKAGE_FIND_VERSION_MIN) |
| OR (_PACKAGE_VERSION_FULL VERSION_GREATER_EQUAL _PACKAGE_FIND_VERSION_UPPER)) |
| set(PACKAGE_VERSION_COMPATIBLE FALSE) |
| else() |
| set(PACKAGE_VERSION_COMPATIBLE TRUE) |
| endif() |
| else() |
| |
| # 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) |
| 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_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_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_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_SEMVER_UPPER)) |
| set(PACKAGE_VERSION_COMPATIBLE FALSE) |
| else() |
| set(PACKAGE_VERSION_COMPATIBLE TRUE) |
| if(_PACKAGE_VERSION_FULL VERSION_LESS _PACKAGE_FIND_VERSION_EXACT_UPPER) |
| set(PACKAGE_VERSION_EXACT TRUE) |
| endif() |
| endif() |
| endif() |