1include(CMakeDetermineVSServicePack)
2
3# The code is almost identical to the CMake version. The only difference is that we remove
4# _DetermineVSServicePack_FastCheckVersionWithCompiler which lead to errors on some systems.
5function(EigenDetermineVSServicePack _pack)
6    if(NOT DETERMINED_VS_SERVICE_PACK OR NOT ${_pack})
7        if(NOT DETERMINED_VS_SERVICE_PACK)
8            _DetermineVSServicePack_CheckVersionWithTryCompile(DETERMINED_VS_SERVICE_PACK _cl_version)
9            if(NOT DETERMINED_VS_SERVICE_PACK)
10                _DetermineVSServicePack_CheckVersionWithTryRun(DETERMINED_VS_SERVICE_PACK _cl_version)
11            endif()
12        endif()
13
14        if(DETERMINED_VS_SERVICE_PACK)
15            if(_cl_version)
16                # Call helper function to determine VS version
17                _DetermineVSServicePackFromCompiler(_sp "${_cl_version}")
18
19                # temporary fix, until CMake catches up
20                if (NOT _sp)
21                    if(${_cl_version} VERSION_EQUAL "17.00.50727.1")
22                        set(_sp "vc110")
23                    elseif(${_cl_version} VERSION_EQUAL "17.00.51106.1")
24                        set(_sp "vc110sp1")
25                    elseif(${_cl_version} VERSION_EQUAL "17.00.60315.1")
26                        set(_sp "vc110sp2")
27                    elseif(${_cl_version} VERSION_EQUAL "17.00.60610.1")
28                        set(_sp "vc110sp3")
29                    else()
30                        set(_sp ${CMAKE_CXX_COMPILER_VERSION})
31                    endif()
32                endif()
33
34                if(_sp)
35                    set(${_pack} ${_sp} CACHE INTERNAL
36                        "The Visual Studio Release with Service Pack")
37                endif()
38            endif()
39        endif()
40    endif()
41endfunction()
42