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