-
Notifications
You must be signed in to change notification settings - Fork 468
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
85 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# This is a basic version file for the Config-mode of find_package(). | ||
# It is used by write_basic_package_version_file() as input file for configure_file() | ||
# to create a version-file which can be installed along a config.cmake file. | ||
# | ||
# The created file sets PACKAGE_VERSION_EXACT if the current version string and | ||
# the requested version string are exactly the same and it sets | ||
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version, | ||
# but only if the requested major version is the same as the current one. | ||
# The variable CVF_VERSION must be set before calling configure_file(). | ||
|
||
|
||
set(PACKAGE_VERSION "@CVF_VERSION@") | ||
|
||
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) | ||
set(PACKAGE_VERSION_COMPATIBLE FALSE) | ||
else() | ||
|
||
if("@CVF_VERSION@" MATCHES "^([0-9]+)\\.") | ||
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") | ||
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0) | ||
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}") | ||
endif() | ||
else() | ||
set(CVF_VERSION_MAJOR "@CVF_VERSION@") | ||
endif() | ||
|
||
if(PACKAGE_FIND_VERSION_RANGE) | ||
# both endpoints of the range must have the expected major version | ||
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1") | ||
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR | ||
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR) | ||
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT))) | ||
set(PACKAGE_VERSION_COMPATIBLE FALSE) | ||
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR | ||
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX) | ||
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX))) | ||
set(PACKAGE_VERSION_COMPATIBLE TRUE) | ||
else() | ||
set(PACKAGE_VERSION_COMPATIBLE FALSE) | ||
endif() | ||
else() | ||
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) | ||
set(PACKAGE_VERSION_COMPATIBLE TRUE) | ||
else() | ||
set(PACKAGE_VERSION_COMPATIBLE FALSE) | ||
endif() | ||
|
||
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) | ||
set(PACKAGE_VERSION_EXACT TRUE) | ||
endif() | ||
endif() | ||
endif() | ||
|
||
|
||
# if the installed project requested no architecture check, don't perform the check | ||
if("@CVF_ARCH_INDEPENDENT@") | ||
return() | ||
endif() | ||
|
||
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: | ||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "") | ||
return() | ||
endif() | ||
|
||
# check that the installed version has the same 32/64bit-ness as the one which is currently searching: | ||
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@") | ||
math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8") | ||
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") | ||
set(PACKAGE_VERSION_UNSUITABLE TRUE) | ||
endif() |