1# Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2# file Copyright.txt or https://cmake.org/licensing for details. 3 4if(NOT "${CPACK_EXTERNAL_REQUESTED_VERSIONS}" STREQUAL "") 5 unset(_found_major) 6 7 foreach(_req_version IN LISTS CPACK_EXTERNAL_REQUESTED_VERSIONS) 8 if(_req_version MATCHES "^([0-9]+)\\.([0-9]+)$") 9 set(_req_major "${CMAKE_MATCH_1}") 10 set(_req_minor "${CMAKE_MATCH_2}") 11 12 foreach(_known_version IN LISTS CPACK_EXTERNAL_KNOWN_VERSIONS) 13 string(REGEX MATCH 14 "^([0-9]+)\\.([0-9]+)$" 15 _known_version_dummy 16 "${_known_version}" 17 ) 18 19 set(_known_major "${CMAKE_MATCH_1}") 20 set(_known_minor "${CMAKE_MATCH_2}") 21 22 if(_req_major EQUAL _known_major AND NOT _known_minor LESS _req_minor) 23 set(_found_major "${_known_major}") 24 set(_found_minor "${_known_minor}") 25 break() 26 endif() 27 endforeach() 28 29 if(DEFINED _found_major) 30 break() 31 endif() 32 endif() 33 endforeach() 34 35 if(DEFINED _found_major) 36 set(CPACK_EXTERNAL_SELECTED_MAJOR "${_found_major}") 37 set(CPACK_EXTERNAL_SELECTED_MINOR "${_found_minor}") 38 set(CPACK_EXTERNAL_SELECTED_VERSION "${_found_major}.${_found_minor}") 39 else() 40 message(FATAL_ERROR 41 "Could not find a suitable version in CPACK_EXTERNAL_REQUESTED_VERSIONS" 42 ) 43 endif() 44else() 45 list(GET CPACK_EXTERNAL_KNOWN_VERSIONS 0 CPACK_EXTERNAL_SELECTED_VERSION) 46 string(REGEX MATCH 47 "^([0-9]+)\\.([0-9]+)$" 48 _dummy 49 "${CPACK_EXTERNAL_SELECTED_VERSION}" 50 ) 51 set(CPACK_EXTERNAL_SELECTED_MAJOR "${CMAKE_MATCH_1}") 52 set(CPACK_EXTERNAL_SELECTED_MINOR "${CMAKE_MATCH_2}") 53endif() 54