Warning, /frameworks/extra-cmake-modules/tests/ECMSetupVersionTest/version_helpers.cmake is written in an unsupported language. File is not indexed.
0001 include(../../test_helpers.cmake)
0002
0003 macro(test_version_file filename version)
0004 unset(PACKAGE_VERSION)
0005 unset(PACKAGE_VERSION_COMPATIBLE)
0006 unset(PACKAGE_VERSION_EXACT)
0007 set(PACKAGE_FIND_VERSION "${version}")
0008 if(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)$")
0009 set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}")
0010 set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}")
0011 set(PACKAGE_FIND_VERSION_PATCH "${CMAKE_MATCH_3}")
0012 set(PACKAGE_FIND_VERSION_TWEAK "${CMAKE_MATCH_4}")
0013 set(PACKAGE_FIND_VERSION_COUNT 4)
0014 elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$")
0015 set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}")
0016 set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}")
0017 set(PACKAGE_FIND_VERSION_PATCH "${CMAKE_MATCH_3}")
0018 set(PACKAGE_FIND_VERSION_TWEAK)
0019 set(PACKAGE_FIND_VERSION_COUNT 3)
0020 elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)$")
0021 set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}")
0022 set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}")
0023 set(PACKAGE_FIND_VERSION_PATCH)
0024 set(PACKAGE_FIND_VERSION_TWEAK)
0025 set(PACKAGE_FIND_VERSION_COUNT 2)
0026 elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)$")
0027 set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}")
0028 set(PACKAGE_FIND_VERSION_MINOR)
0029 set(PACKAGE_FIND_VERSION_PATCH)
0030 set(PACKAGE_FIND_VERSION_TWEAK)
0031 set(PACKAGE_FIND_VERSION_COUNT 1)
0032 elseif(PACKAGE_FIND_VERSION STREQUAL "")
0033 set(PACKAGE_FIND_VERSION_MAJOR)
0034 set(PACKAGE_FIND_VERSION_MINOR)
0035 set(PACKAGE_FIND_VERSION_PATCH)
0036 set(PACKAGE_FIND_VERSION_TWEAK)
0037 set(PACKAGE_FIND_VERSION_COUNT 0)
0038 else()
0039 message(STATUS "Invalid version ${PACKAGE_FIND_VERSION}")
0040 endif()
0041 include("${filename}")
0042 endmacro()
0043
0044 macro(version_var_checks prefix version)
0045 assert_var_str_value(${prefix}_VERSION "${version}")
0046 if(ECM_GLOBAL_FIND_VERSION VERSION_LESS 5.83.0)
0047 assert_var_str_value(${prefix}_VERSION_STRING "${version}")
0048 endif()
0049 if("${version}" MATCHES "^([0-9]+)")
0050 assert_var_num_value(${prefix}_VERSION_MAJOR ${CMAKE_MATCH_1})
0051 endif()
0052 if("${version}" MATCHES "^[0-9]+\\.([0-9]+)")
0053 assert_var_num_value(${prefix}_VERSION_MINOR ${CMAKE_MATCH_1})
0054 endif()
0055 if("${version}" MATCHES "^[0-9]+\\.[0-9]+\\.([0-9]+)")
0056 assert_var_num_value(${prefix}_VERSION_PATCH ${CMAKE_MATCH_1})
0057 endif()
0058 if("${version}" MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
0059 assert_var_num_value(${prefix}_VERSION_TWEAK ${CMAKE_MATCH_1})
0060 endif()
0061 endmacro()
0062
0063 macro(project_version_var_checks version)
0064 version_var_checks(PROJECT "${version}")
0065 endmacro()
0066
0067 macro(standard_version_var_checks prefix version)
0068 version_var_checks(PROJECT "${version}")
0069 version_var_checks("${prefix}" "${version}")
0070 if(${ARGC} GREATER 2)
0071 assert_var_num_value(${prefix}_SOVERSION ${ARGV2})
0072 elseif(DEFINED ${prefix}_VERSION_MAJOR AND NOT ${prefix}_VERSION_MAJOR STREQUAL "")
0073 assert_var_num_value(${prefix}_SOVERSION "${${prefix}_VERSION_MAJOR}")
0074 endif()
0075 endmacro()
0076
0077 macro(AnyNewer_2_3_4_checks filename)
0078 # too old - fails
0079 test_version_file("${filename}" "3.1.1")
0080 assert_var_str_value(PACKAGE_VERSION "2.3.4")
0081 assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
0082 assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
0083
0084 # too old - fails
0085 test_version_file("${filename}" "3")
0086 assert_var_str_value(PACKAGE_VERSION "2.3.4")
0087 assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
0088 assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
0089
0090 # too old - fails
0091 test_version_file("${filename}" "2.3.4.1")
0092 assert_var_str_value(PACKAGE_VERSION "2.3.4")
0093 assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
0094 assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
0095
0096 # newer - succeeds
0097 test_version_file("${filename}" "1.1.1")
0098 assert_var_str_value(PACKAGE_VERSION "2.3.4")
0099 assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
0100 assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
0101
0102 # newer - succeeds
0103 test_version_file("${filename}" "2.1.1")
0104 assert_var_str_value(PACKAGE_VERSION "2.3.4")
0105 assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
0106 assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
0107
0108 # newer - succeeds
0109 test_version_file("${filename}" "2")
0110 assert_var_str_value(PACKAGE_VERSION "2.3.4")
0111 assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
0112 assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
0113
0114 # unspecified - succeeds
0115 test_version_file("${filename}" "")
0116 assert_var_str_value(PACKAGE_VERSION "2.3.4")
0117 assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
0118 assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
0119
0120 # exact - succeeds
0121 test_version_file("${filename}" "2.3.4")
0122 assert_var_str_value(PACKAGE_VERSION "2.3.4")
0123 assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
0124 assert_var_bool_value(PACKAGE_VERSION_EXACT TRUE)
0125 endmacro()