Jelajahi Sumber

Add support for embeded manifests for Intel C/C++/Fortran compilers

Bill Hoffman 16 tahun lalu
induk
melakukan
8710cc6422
2 mengubah file dengan 30 tambahan dan 2 penghapusan
  1. 18 1
      Modules/Platform/Windows-icl.cmake
  2. 12 1
      Modules/Platform/Windows-ifort.cmake

+ 18 - 1
Modules/Platform/Windows-icl.cmake

@@ -40,7 +40,7 @@ SET(CMAKE_C_LINK_EXECUTABLE
 SET(CMAKE_COMPILE_RESOURCE "rc <FLAGS> /fo<OBJECT> <SOURCE>")
 
 SET(CMAKE_CXX_LINK_EXECUTABLE
-    "<CMAKE_CXX_COMPILER> ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} <FLAGS> <OBJECTS> /Fe<TARGET> -link <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
+  "<CMAKE_CXX_COMPILER> ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} <FLAGS> <OBJECTS> /Fe<TARGET> -link <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
 
 SET(CMAKE_CREATE_WIN32_EXE /subsystem:windows)
 SET(CMAKE_CREATE_CONSOLE_EXE /subsystem:console)
@@ -75,3 +75,20 @@ SET (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBU
 SET (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
 SET (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
 SET (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
+
+INCLUDE(Platform/Windows-Intel)
+
+IF(_INTEL_COMPILER_SUPPORTS_MANIFEST)
+  SET(CMAKE_C_LINK_EXECUTABLE
+    "<CMAKE_COMMAND> -E vs_link_exe ${CMAKE_C_LINK_EXECUTABLE}")
+  SET(CMAKE_C_CREATE_SHARED_LIBRARY
+    "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_C_CREATE_SHARED_LIBRARY}")
+  SET(CMAKE_C_CREATE_SHARED_MODULE
+    "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_C_CREATE_SHARED_MODULE}")
+  SET(CMAKE_CXX_LINK_EXECUTABLE
+    "<CMAKE_COMMAND> -E vs_link_exe ${CMAKE_CXX_LINK_EXECUTABLE}")
+  SET(CMAKE_CXX_CREATE_SHARED_LIBRARY
+    "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_LIBRARY}")
+  SET(CMAKE_CXX_CREATE_SHARED_MODULE
+    "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_MODULE}")
+ENDIF(_INTEL_COMPILER_SUPPORTS_MANIFEST)

+ 12 - 1
Modules/Platform/Windows-ifort.cmake

@@ -26,7 +26,18 @@ SET(CMAKE_Fortran_COMPILE_OBJECT
 SET(CMAKE_COMPILE_RESOURCE "rc <FLAGS> /fo<OBJECT> <SOURCE>")
 
 SET(CMAKE_Fortran_LINK_EXECUTABLE
-    "<CMAKE_Fortran_COMPILER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} <FLAGS> /Fe<TARGET> -link <CMAKE_Fortran_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
+  "<CMAKE_Fortran_COMPILER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} <FLAGS> /Fe<TARGET> -link <CMAKE_Fortran_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
+
+INCLUDE(Platform/Windows-Intel)
+
+IF(_INTEL_COMPILER_SUPPORTS_MANIFEST)
+    SET(CMAKE_Fortran_LINK_EXECUTABLE
+      "<CMAKE_COMMAND> -E vs_link_exe ${CMAKE_Fortran_LINK_EXECUTABLE}")
+  SET(CMAKE_Fortran_CREATE_SHARED_LIBRARY
+    "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_Fortran_CREATE_SHARED_LIBRARY}")
+  SET(CMAKE_Fortran_CREATE_SHARED_MODULE
+    "<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_Fortran_CREATE_SHARED_MODULE}")
+ENDIF(_INTEL_COMPILER_SUPPORTS_MANIFEST)
 
 SET(CMAKE_CREATE_WIN32_EXE /subsystem:windows)
 SET(CMAKE_CREATE_CONSOLE_EXE /subsystem:console)