1
0
Эх сурвалжийг харах

Merge topic 'irsl-intel'

fd4406f3 IRSL: Add Intel compiler support
8444252f IRSL: Install VC++ OpenMP libraries only for MSVC

Acked-by: Kitware Robot <[email protected]>
Acked-by: Pelle <[email protected]>
Merge-request: !1121
Brad King 8 жил өмнө
parent
commit
425bb1a66a

+ 5 - 0
Help/release/dev/irsl-intel.rst

@@ -0,0 +1,5 @@
+irsl-intel
+----------
+
+* The :module:`InstallRequiredSystemLibraries` gained support for installing
+  Intel compiler runtimes.

+ 139 - 1
Modules/InstallRequiredSystemLibraries.cmake

@@ -56,6 +56,36 @@
 #   Specify the :command:`install(PROGRAMS)` command ``COMPONENT``
 #   option.  If not specified, no such option will be used.
 
+set(_IRSL_HAVE_Intel FALSE)
+set(_IRSL_HAVE_MSVC FALSE)
+foreach(LANG IN ITEMS C CXX Fortran)
+  if(CMAKE_${LANG}_COMPILER_ID STREQUAL Intel)
+    if(NOT _IRSL_HAVE_Intel)
+      get_filename_component(_Intel_basedir "${CMAKE_${LANG}_COMPILER}" PATH)
+      if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+        set(_Intel_archdir intel64)
+      else()
+        set(_Intel_archdir x86)
+      endif()
+      set(_Intel_compiler_ver ${CMAKE_${LANG}_COMPILER_VERSION})
+      if(WIN32)
+        get_filename_component(_Intel_redistdir "${_Intel_basedir}/../../redist/${_Intel_archdir}/compiler" ABSOLUTE)
+      elseif(APPLE)
+        get_filename_component(_Intel_redistdir "${_Intel_basedir}/../../compiler/lib" ABSOLUTE)
+      else()
+        if(EXISTS "${_Intel_basedir}/../lib/${_Intel_archdir}_lin")
+          get_filename_component(_Intel_redistdir "${_Intel_basedir}/../lib/${_Intel_archdir}" ABSOLUTE)
+        else()
+          get_filename_component(_Intel_redistdir "${_Intel_basedir}/../../compiler/lib/${_Intel_archdir}_lin" ABSOLUTE)
+        endif()
+      endif()
+      set(_IRSL_HAVE_Intel TRUE)
+    endif()
+  elseif(CMAKE_${LANG}_COMPILER_ID STREQUAL MSVC)
+    set(_IRSL_HAVE_MSVC TRUE)
+  endif()
+endforeach()
+
 if(MSVC)
   file(TO_CMAKE_PATH "$ENV{SYSTEMROOT}" SYSTEMROOT)
 
@@ -487,7 +517,7 @@ if(MSVC)
 
   # MSVC 8 was the first version with OpenMP
   # Furthermore, there is no debug version of this
-  if(CMAKE_INSTALL_OPENMP_LIBRARIES)
+  if(CMAKE_INSTALL_OPENMP_LIBRARIES AND _IRSL_HAVE_MSVC)
     if(MSVC_VERSION EQUAL 1911)
       set(_MSOMP_DLL_VERSION 140)
       set(_MSOMP_IDE_VERSION 15)
@@ -548,6 +578,109 @@ if(MSVC)
   endforeach()
 endif()
 
+if(_IRSL_HAVE_Intel)
+  unset(__install_libs)
+  if(CMAKE_INSTALL_OPENMP_LIBRARIES)
+    if(WIN32)
+      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5md.dll" "${_Intel_redistdir}/libiompstubs5md.dll")
+    elseif(APPLE)
+      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5.dylib" "${_Intel_redistdir}/libiompstubs5.dylib")
+    else()
+      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5.so" "${_Intel_redistdir}/libiompstubs5.so")
+      if(_Intel_compiler_ver VERSION_LESS 17)
+        list(APPEND __install_libs "${_Intel_redistdir}/libomp_db.so")
+      endif()
+      if(_Intel_compiler_ver VERSION_LESS 13)
+        list(APPEND __install_libs "${_Intel_redistdir}/libiompprof5.so")
+      endif()
+    endif()
+  endif()
+  if(WIN32)
+    set(__install_dirs "${_Intel_redistdir}/irml" "${_Intel_redistdir}/irml_c"
+      "${_Intel_redistdir}/1033" "${_Intel_redistdir}/1041")
+    foreach(__Intel_lib IN ITEMS cilkrts20.dll libchkp.dll libgfxoffload.dll libioffload_host.dll libirngmd.dll
+      libmmd.dll libmmdd.dll libmpx.dll liboffload.dll svml_dispmd.dll)
+
+      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+    endforeach()
+    if(CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
+      foreach(__Intel_lib IN ITEMS libicaf.dll libifcoremd.dll libifcoremdd.dll libifcorert.dll libifcorertd.dll libifportmd.dll)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+  elseif(APPLE)
+    foreach(__Intel_lib IN ITEMS libchkp.dylib libcilkrts.5.dylib libcilkrts.dylib libimf.dylib libintlc.dylib libirc.dylib libirng.dylib libsvml.dylib)
+      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+    endforeach()
+    if(_Intel_compiler_ver VERSION_LESS 17)
+      list(APPEND __install_libs "${_Intel_redistdir}/libistrconv.dylib")
+    endif()
+    if(CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
+      foreach(__Intel_lib IN ITEMS libifcore.dylib libifcoremt.dylib libifport.dylib libifportmt.dylib)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+  else()
+    set(__install_dirs "${_Intel_redistdir}/irml")
+    foreach(__Intel_lib IN ITEMS cilk_db.so libchkp.so libcilkrts.so libcilkrts.so.5 libimf.so libintlc.so libintlc.so.5 libirc.so libpdbx.so libpdbx.so.5 libsvml.so)
+
+      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+    endforeach()
+    if(_Intel_compiler_ver VERSION_GREATER_EQUAL 13)
+      foreach(__Intel_lib IN ITEMS libirng.so liboffload.so liboffload.so.5)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+    if(_Intel_compiler_ver VERSION_GREATER_EQUAL 15)
+      foreach(__Intel_lib IN ITEMS libgfxoffload.so libistrconv.so)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+    if(_Intel_compiler_ver VERSION_GREATER_EQUAL 16)
+      foreach(__Intel_lib IN ITEMS libioffload_host.so libioffload_host.so.5 libioffload_target.so libioffload_target.so.5 libmpx.so offload_main)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+    if(_Intel_compiler_ver VERSION_LESS 15)
+      foreach(__Intel_lib IN ITEMS libcxaguard.so libcxaguard.so.5)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+    if(CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
+      foreach(__Intel_lib IN ITEMS libicaf.so libifcore.so libifcore.so.5 libifcoremt.so libifcoremt.so.5 libifport.so libifport.so.5)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+  endif()
+
+  foreach(lib IN LISTS __install_libs)
+    if(EXISTS ${lib})
+      list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${lib})
+    else()
+      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+        message(WARNING "system runtime library file does not exist: '${lib}'")
+      endif()
+    endif()
+  endforeach()
+
+  foreach(dir IN LISTS __install_dirs)
+    if(EXISTS ${dir})
+      list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_DIRECTORIES ${dir})
+    else()
+      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+        message(WARNING "system runtime library file does not exist: '${dir}'")
+      endif()
+    endif()
+  endforeach()
+endif()
+
 if(WATCOM)
   get_filename_component( CompilerPath ${CMAKE_C_COMPILER} PATH )
   if(CMAKE_C_COMPILER_VERSION)
@@ -601,5 +734,10 @@ if(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
       DESTINATION ${CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION}
       ${_CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT}
       )
+
+    install(DIRECTORY ${CMAKE_INSTALL_SYSTEM_RUNTIME_DIRECTORIES}
+      DESTINATION ${CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION}
+      ${_CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT}
+      )
   endif()
 endif()