1# This is a basic version file for the Config-mode of find_package(). 2# It is used by write_basic_package_version_file() as input file for configure_file() 3# to create a version-file which can be installed along a config.cmake file. 4# 5# The created file sets PACKAGE_VERSION_EXACT if the current version string and 6# the requested version string are exactly the same and it sets 7# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version, 8# but only if the requested major version is the same as the current one. 9# The variable CVF_VERSION must be set before calling configure_file(). 10 11 12set(PACKAGE_VERSION "@PACKAGE_VERSION@") 13 14if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) 15 set(PACKAGE_VERSION_COMPATIBLE FALSE) 16else() 17 18 if("@PACKAGE_VERSION@" MATCHES "^([0-9]+)\\.") 19 set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") 20 else() 21 set(CVF_VERSION_MAJOR "@PACKAGE_VERSION@") 22 endif() 23 24 if(PACKAGE_FIND_VERSION_RANGE) 25 # both endpoints of the range must have the expected major version 26 math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1") 27 if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR 28 OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR) 29 OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT))) 30 set(PACKAGE_VERSION_COMPATIBLE FALSE) 31 elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR 32 AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX) 33 OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX))) 34 set(PACKAGE_VERSION_COMPATIBLE TRUE) 35 else() 36 set(PACKAGE_VERSION_COMPATIBLE FALSE) 37 endif() 38 else() 39 if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) 40 set(PACKAGE_VERSION_COMPATIBLE TRUE) 41 else() 42 set(PACKAGE_VERSION_COMPATIBLE FALSE) 43 endif() 44 45 if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) 46 set(PACKAGE_VERSION_EXACT TRUE) 47 endif() 48 endif() 49endif() 50 51 52# if the installed project requested no architecture check, don't perform the check 53if("FALSE") 54 return() 55endif() 56 57# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: 58if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@ac_cv_sizeof_void_p@" STREQUAL "") 59 return() 60endif() 61 62# check that the installed version has the same 32/64bit-ness as the one which is currently searching: 63if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@ac_cv_sizeof_void_p@") 64 math(EXPR installedBits "@ac_cv_sizeof_void_p@ * 8") 65 set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") 66 set(PACKAGE_VERSION_UNSUITABLE TRUE) 67endif() 68