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