• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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