|  | include(CMakeDetermineVSServicePack) | 
|  |  | 
|  | # The code is almost identical to the CMake version. The only difference is that we remove | 
|  | # _DetermineVSServicePack_FastCheckVersionWithCompiler which lead to errors on some systems. | 
|  | function(EigenDetermineVSServicePack _pack) | 
|  | if(NOT DETERMINED_VS_SERVICE_PACK OR NOT ${_pack}) | 
|  | if(NOT DETERMINED_VS_SERVICE_PACK) | 
|  | _DetermineVSServicePack_CheckVersionWithTryCompile(DETERMINED_VS_SERVICE_PACK _cl_version) | 
|  | if(NOT DETERMINED_VS_SERVICE_PACK) | 
|  | _DetermineVSServicePack_CheckVersionWithTryRun(DETERMINED_VS_SERVICE_PACK _cl_version) | 
|  | endif() | 
|  | endif() | 
|  |  | 
|  | if(DETERMINED_VS_SERVICE_PACK) | 
|  | if(_cl_version) | 
|  | # Call helper function to determine VS version | 
|  | _DetermineVSServicePackFromCompiler(_sp "${_cl_version}") | 
|  |  | 
|  | # temporary fix, until CMake catches up | 
|  | if (NOT _sp) | 
|  | if(${_cl_version} VERSION_EQUAL "17.00.50727.1") | 
|  | set(_sp "vc110") | 
|  | elseif(${_cl_version} VERSION_EQUAL "17.00.51106.1") | 
|  | set(_sp "vc110sp1") | 
|  | elseif(${_cl_version} VERSION_EQUAL "17.00.60315.1") | 
|  | set(_sp "vc110sp2") | 
|  | elseif(${_cl_version} VERSION_EQUAL "17.00.60610.1") | 
|  | set(_sp "vc110sp3") | 
|  | else() | 
|  | set(_sp ${CMAKE_CXX_COMPILER_VERSION}) | 
|  | endif() | 
|  | endif() | 
|  |  | 
|  | if(_sp) | 
|  | set(${_pack} ${_sp} CACHE INTERNAL | 
|  | "The Visual Studio Release with Service Pack") | 
|  | endif() | 
|  | endif() | 
|  | endif() | 
|  | endif() | 
|  | endfunction() |