1 # 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 11 function(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) 26 endfunction() 27 28 function(DetermineOSVersion OS_VERSION) 29 if (WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows) 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() 46 endfunction() 47