| set(min_ver 3.10) | |
| cmake_minimum_required(VERSION ${min_ver}) | |
| if("${CMAKE_VERSION}" VERSION_LESS "${min_ver}") | |
| message(FATAL_ERROR | |
| "CMAKE_VERSION=[${CMAKE_VERSION}] is less than [${min_ver}]") | |
| else() | |
| message("CMAKE_VERSION=[${CMAKE_VERSION}] is not less than [${min_ver}]") | |
| endif() | |
| set(EQUALV "1 1") | |
| list(APPEND EQUALV "1.0 1") | |
| list(APPEND EQUALV "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 1") | |
| list(APPEND EQUALV "1.2.3.4.5.6.7 1.2.3.4.5.6.7") | |
| list(APPEND EQUALV "1.2.3.4.5.6.7.8.9 1.2.3.4.5.6.7.8.9") | |
| foreach(v IN LISTS EQUALV) | |
| string(REGEX MATCH "(.*) (.*)" _dummy "${v}") | |
| # modify any of the operands to see the negative check also works | |
| if("${CMAKE_MATCH_1}.2" VERSION_EQUAL CMAKE_MATCH_2) | |
| message(FATAL_ERROR "${CMAKE_MATCH_1}.2 is equal ${CMAKE_MATCH_2}?") | |
| else() | |
| message(STATUS "${CMAKE_MATCH_1}.2 is not equal ${CMAKE_MATCH_2}") | |
| endif() | |
| if(CMAKE_MATCH_1 VERSION_EQUAL "${CMAKE_MATCH_2}.2") | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is equal ${CMAKE_MATCH_2}.2?") | |
| else() | |
| message(STATUS "${CMAKE_MATCH_1} is not equal ${CMAKE_MATCH_2}.2") | |
| endif() | |
| endforeach() | |
| # test the negative outcomes first, due to the implementation the positive | |
| # allow some additional strings to pass that would not fail for the negative | |
| # tests | |
| list(APPEND EQUALV "1a 1") | |
| list(APPEND EQUALV "1.1a 1.1") | |
| list(APPEND EQUALV "1.0a 1") | |
| list(APPEND EQUALV "1a 1.0") | |
| list(APPEND EQUALV "1a1 1") | |
| list(APPEND EQUALV "1.1a1 1.1") | |
| list(APPEND EQUALV "1.0a1 1") | |
| list(APPEND EQUALV "1a1 1.0") | |
| list(APPEND EQUALV "1-suffix 1") | |
| list(APPEND EQUALV "1.1-suffix 1.1") | |
| list(APPEND EQUALV "1.0-suffix 1") | |
| list(APPEND EQUALV "1-suffix 1.0") | |
| list(APPEND EQUALV "1-suffix.1 1") | |
| list(APPEND EQUALV "1.1-suffix.1 1.1") | |
| list(APPEND EQUALV "1.0-suffix.1 1") | |
| list(APPEND EQUALV "1-suffix.1 1.0") | |
| foreach(v IN LISTS EQUALV) | |
| string(REGEX MATCH "(.*) (.*)" _dummy "${v}") | |
| # check equal versions | |
| if(CMAKE_MATCH_1 VERSION_EQUAL CMAKE_MATCH_2) | |
| message(STATUS "${CMAKE_MATCH_1} is equal ${CMAKE_MATCH_2}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is not equal ${CMAKE_MATCH_2}?") | |
| endif() | |
| # still equal, but inverted order of operands | |
| if(CMAKE_MATCH_2 VERSION_EQUAL CMAKE_MATCH_1) | |
| message(STATUS "${CMAKE_MATCH_2} is equal ${CMAKE_MATCH_1}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_2} is not equal ${CMAKE_MATCH_1}?") | |
| endif() | |
| # check less or equal | |
| if(CMAKE_MATCH_1 VERSION_LESS_EQUAL CMAKE_MATCH_2) | |
| message(STATUS "${CMAKE_MATCH_1} is equal ${CMAKE_MATCH_2}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is not equal ${CMAKE_MATCH_2}") | |
| endif() | |
| # check less or equal, inverted order of operands | |
| if(CMAKE_MATCH_2 VERSION_LESS_EQUAL CMAKE_MATCH_1) | |
| message(STATUS "${CMAKE_MATCH_2} is equal ${CMAKE_MATCH_1}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_2} is not equal ${CMAKE_MATCH_1}") | |
| endif() | |
| # check greater or equal | |
| if(CMAKE_MATCH_1 VERSION_GREATER_EQUAL CMAKE_MATCH_2) | |
| message(STATUS "${CMAKE_MATCH_1} is equal ${CMAKE_MATCH_2}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is not equal ${CMAKE_MATCH_2}") | |
| endif() | |
| # check greater or equal, inverted order of operands | |
| if(CMAKE_MATCH_2 VERSION_GREATER_EQUAL CMAKE_MATCH_1) | |
| message(STATUS "${CMAKE_MATCH_2} is equal ${CMAKE_MATCH_1}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_2} is not equal ${CMAKE_MATCH_1}") | |
| endif() | |
| # check less | |
| if(NOT CMAKE_MATCH_1 VERSION_LESS CMAKE_MATCH_2) | |
| message(STATUS "${CMAKE_MATCH_1} is not less than ${CMAKE_MATCH_2}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is less than ${CMAKE_MATCH_2}") | |
| endif() | |
| # check less, inverted order of operands | |
| if(NOT CMAKE_MATCH_2 VERSION_LESS CMAKE_MATCH_1) | |
| message(STATUS "${CMAKE_MATCH_2} is not less than ${CMAKE_MATCH_1}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_2} is less than ${CMAKE_MATCH_1}") | |
| endif() | |
| # check greater | |
| if(NOT CMAKE_MATCH_1 VERSION_GREATER CMAKE_MATCH_2) | |
| message(STATUS "${CMAKE_MATCH_1} is not greater than ${CMAKE_MATCH_2}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is greater than ${CMAKE_MATCH_2}") | |
| endif() | |
| # check greater, inverted order of operands | |
| if(NOT CMAKE_MATCH_2 VERSION_GREATER CMAKE_MATCH_1) | |
| message(STATUS "${CMAKE_MATCH_2} is not greater than ${CMAKE_MATCH_1}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_2} is greater than ${CMAKE_MATCH_1}") | |
| endif() | |
| endforeach() | |
| set(LESSV "1.2.3.4.5.6.7.8 1.2.3.4.5.6.7.9") | |
| list(APPEND LESSV "1.2.3.4.5.6.7 1.2.3.4.5.6.7.9") | |
| list(APPEND LESSV "1 1.0.0.1") | |
| list(APPEND LESSV "1 2a") | |
| list(APPEND LESSV "1a 2") | |
| list(APPEND LESSV "1 2a1") | |
| list(APPEND LESSV "1a1 2") | |
| list(APPEND LESSV "1 2-suffix") | |
| list(APPEND LESSV "1-suffix 2") | |
| list(APPEND LESSV "1 2-suffix.1") | |
| list(APPEND LESSV "1-suffix.1 2") | |
| foreach(v IN LISTS LESSV) | |
| string(REGEX MATCH "(.*) (.*)" _dummy "${v}") | |
| # check less | |
| if(CMAKE_MATCH_1 VERSION_LESS CMAKE_MATCH_2) | |
| message(STATUS "${CMAKE_MATCH_1} is less than ${CMAKE_MATCH_2}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is not less than ${CMAKE_MATCH_2}?") | |
| endif() | |
| # check greater | |
| if(CMAKE_MATCH_2 VERSION_GREATER CMAKE_MATCH_1) | |
| message(STATUS "${CMAKE_MATCH_2} is greater than ${CMAKE_MATCH_1}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_2} is not greater than ${CMAKE_MATCH_1}?") | |
| endif() | |
| # check less negative case | |
| if(NOT CMAKE_MATCH_2 VERSION_LESS CMAKE_MATCH_1) | |
| message(STATUS "${CMAKE_MATCH_2} is not less than ${CMAKE_MATCH_1}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_2} is less than ${CMAKE_MATCH_1}?") | |
| endif() | |
| # check greater or equal (same as less negative) | |
| if(CMAKE_MATCH_2 VERSION_GREATER_EQUAL CMAKE_MATCH_1) | |
| message(STATUS "${CMAKE_MATCH_2} is not less than ${CMAKE_MATCH_1}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_2} is less than ${CMAKE_MATCH_1}?") | |
| endif() | |
| # check greater negative case | |
| if(NOT CMAKE_MATCH_1 VERSION_GREATER CMAKE_MATCH_2) | |
| message(STATUS "${CMAKE_MATCH_1} is not greater than ${CMAKE_MATCH_2}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is greater than ${CMAKE_MATCH_2}?") | |
| endif() | |
| # check less or equal (same as greater negative) case | |
| if(CMAKE_MATCH_1 VERSION_LESS_EQUAL CMAKE_MATCH_2) | |
| message(STATUS "${CMAKE_MATCH_1} is not greater than ${CMAKE_MATCH_2}") | |
| else() | |
| message(FATAL_ERROR "${CMAKE_MATCH_1} is greater than ${CMAKE_MATCH_2}?") | |
| endif() | |
| endforeach() |