aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmake/EigenDetermineVSServicePack.cmake
blob: fed78194d2faea19f50f2dabc0157f419d6e45d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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()