| 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() |