Browse Source

IRSL: Fix discovery of VS 2019 v142 toolset redistributables

Since VS 2017's v141 toolset there is no longer a simple equation to
calculate the redist name, dll version, and VS IDE version from just the
MSVC toolset version.  Refactor the logic to use hard-coded values and
warn when a new version is not supported.

Fixes: #19125
Brad King 6 years ago
parent
commit
33ee779330
1 changed files with 14 additions and 9 deletions
  1. 14 9
      Modules/InstallRequiredSystemLibraries.cmake

+ 14 - 9
Modules/InstallRequiredSystemLibraries.cmake

@@ -210,20 +210,25 @@ if(MSVC)
   set(_MSVC_IDE_VERSION "")
   if(MSVC_VERSION GREATER_EQUAL 2000)
     message(WARNING "MSVC ${MSVC_VERSION} not yet supported.")
-  elseif(MSVC_TOOLSET_VERSION)
-    set(MSVC_REDIST_NAME VC${MSVC_TOOLSET_VERSION})
+  elseif(MSVC_VERSION_VERSION GREATER_EQUAL 143)
+    message(WARNING "MSVC toolset v${MSVC_VERSION_VERSION} not yet supported.")
+  elseif(MSVC_TOOLSET_VERSION EQUAL 142)
+    # FIXME: VS 2019 RC 4 uses VC141 but an update will fix it to be VC142.
+    set(MSVC_REDIST_NAME VC141)
+    set(_MSVC_DLL_VERSION 140)
+    set(_MSVC_IDE_VERSION 16)
+  elseif(MSVC_TOOLSET_VERSION EQUAL 141)
+    set(MSVC_REDIST_NAME VC141)
+    set(_MSVC_DLL_VERSION 140)
+    set(_MSVC_IDE_VERSION 15)
     if(MSVC_VERSION EQUAL 1910)
       # VS2017 named this differently prior to update 3.
       set(MSVC_REDIST_NAME VC150)
     endif()
-
+  elseif(MSVC_TOOLSET_VERSION)
+    set(MSVC_REDIST_NAME VC${MSVC_TOOLSET_VERSION})
     math(EXPR _MSVC_DLL_VERSION "${MSVC_TOOLSET_VERSION} / 10 * 10")
-
-    if(MSVC_TOOLSET_VERSION EQUAL 141)
-      set(_MSVC_IDE_VERSION 15)
-    else()
-      math(EXPR _MSVC_IDE_VERSION "${MSVC_TOOLSET_VERSION} / 10")
-    endif()
+    math(EXPR _MSVC_IDE_VERSION "${MSVC_TOOLSET_VERSION} / 10")
   endif()
 
   set(_MSVCRT_DLL_VERSION "")