Browse Source

CUDA: Find MSVC binutils on Windows

On Windows the host link launcher is just `link.exe`.  Find and use that
instead of trying to extract the launcher from the `nvcc -v` output.
Brad King 9 years ago
parent
commit
522b913f43
2 changed files with 8 additions and 3 deletions
  1. 7 3
      Modules/CMakeDetermineCUDACompiler.cmake
  2. 1 0
      Modules/CMakeFindBinUtils.cmake

+ 7 - 3
Modules/CMakeDetermineCUDACompiler.cmake

@@ -116,9 +116,13 @@ if(CMAKE_CUDA_COMPILER_ID STREQUAL NVIDIA)
   endif()
 
   if(_nvcc_link_line)
-    #extract the compiler that is being used for linking
-    separate_arguments(_nvcc_link_line_args UNIX_COMMAND "${_nvcc_link_line}")
-    list(GET _nvcc_link_line_args 0 CMAKE_CUDA_HOST_LINK_LAUNCHER)
+    if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
+      set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${CMAKE_LINKER}")
+    else()
+      #extract the compiler that is being used for linking
+      separate_arguments(_nvcc_link_line_args UNIX_COMMAND "${_nvcc_link_line}")
+      list(GET _nvcc_link_line_args 0 CMAKE_CUDA_HOST_LINK_LAUNCHER)
+    endif()
 
     #prefix the line with cuda-fake-ld so that implicit link info believes it is
     #a link line

+ 1 - 0
Modules/CMakeFindBinUtils.cmake

@@ -25,6 +25,7 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
    OR "x${CMAKE_Fortran_SIMULATE_ID}" STREQUAL "xMSVC"
    OR "x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC"
    OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC"
+   OR "x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC"
    OR (CMAKE_GENERATOR MATCHES "Visual Studio"
        AND NOT CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android"))