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