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()