xref: /aosp_15_r20/external/eigen/cmake/EigenDetermineOSVersion.cmake (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
1*bf2c3715SXin Li# The utility function DetermineOSVersion aims at providing an
2*bf2c3715SXin Li# improved version of the CMake variable ${CMAKE_SYSTEM} on Windows
3*bf2c3715SXin Li# machines.
4*bf2c3715SXin Li#
5*bf2c3715SXin Li# Usage:
6*bf2c3715SXin Li#  include(EigenDetermineOSVersion)
7*bf2c3715SXin Li#  DetermineOSVersion(OS_VERSION)
8*bf2c3715SXin Li#  message("OS: ${OS_VERSION}")
9*bf2c3715SXin Li
10*bf2c3715SXin Li# - A little helper variable which should not be directly called
11*bf2c3715SXin Lifunction(DetermineShortWindowsName WIN_VERSION win_num_version)
12*bf2c3715SXin Li   if    (${win_num_version} VERSION_EQUAL "6.1")
13*bf2c3715SXin Li       set(_version "win7")
14*bf2c3715SXin Li   elseif(${win_num_version} VERSION_EQUAL "6.0")
15*bf2c3715SXin Li       set(_version "winVista")
16*bf2c3715SXin Li   elseif(${win_num_version} VERSION_EQUAL "5.2")
17*bf2c3715SXin Li       set(_version "winXpProf")
18*bf2c3715SXin Li   elseif(${win_num_version} VERSION_EQUAL "5.1")
19*bf2c3715SXin Li       set(_version "winXp")
20*bf2c3715SXin Li   elseif(${win_num_version} VERSION_EQUAL "5.0")
21*bf2c3715SXin Li       set(_version "win2000Prof")
22*bf2c3715SXin Li   else()
23*bf2c3715SXin Li       set(_version "unknownWin")
24*bf2c3715SXin Li   endif()
25*bf2c3715SXin Li   set(${WIN_VERSION} ${_version} PARENT_SCOPE)
26*bf2c3715SXin Liendfunction()
27*bf2c3715SXin Li
28*bf2c3715SXin Lifunction(DetermineOSVersion OS_VERSION)
29*bf2c3715SXin Li  if (WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
30*bf2c3715SXin Li    file (TO_NATIVE_PATH "$ENV{COMSPEC}" SHELL)
31*bf2c3715SXin Li    exec_program( ${SHELL} ARGS "/c" "ver" OUTPUT_VARIABLE ver_output)
32*bf2c3715SXin Li
33*bf2c3715SXin Li      string(REGEX MATCHALL "[0-9]+"
34*bf2c3715SXin Li           ver_list "${ver_output}")
35*bf2c3715SXin Li      list(GET ver_list 0 _major)
36*bf2c3715SXin Li      list(GET ver_list 1 _minor)
37*bf2c3715SXin Li
38*bf2c3715SXin Li    set(win_num_version ${_major}.${_minor})
39*bf2c3715SXin Li    DetermineShortWindowsName(win_version "${win_num_version}")
40*bf2c3715SXin Li    if(win_version)
41*bf2c3715SXin Li      set(${OS_VERSION} ${win_version} PARENT_SCOPE)
42*bf2c3715SXin Li    endif()
43*bf2c3715SXin Li  else()
44*bf2c3715SXin Li    set(${OS_VERSION} ${CMAKE_SYSTEM} PARENT_SCOPE)
45*bf2c3715SXin Li  endif()
46*bf2c3715SXin Liendfunction()
47