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