mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 06:09:52 -06:00
Merge topic 'cuda-vs' into release-3.28
79f3f29e50CUDA: Parse NVCC implicit compile/link information in Visual Studio generators27e64a8498CMakeNVCCParseImplicitInfo: Recognize link.exe line in CUDA VS integration045399a461CMakeParseImplicitLinkInfo: Ignore MSVC link /implib: flag Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Robert Maynard <robertjmaynard@gmail.com> Merge-request: !8938
This commit is contained in:
@@ -164,26 +164,7 @@ if(MSVC_CUDA_ARCHITECTURE_ID)
|
||||
"set(MSVC_CUDA_ARCHITECTURE_ID ${MSVC_CUDA_ARCHITECTURE_ID})")
|
||||
endif()
|
||||
|
||||
if(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${CMAKE_LINKER}")
|
||||
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "")
|
||||
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "")
|
||||
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
||||
|
||||
# We do not currently detect CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES but we
|
||||
# do need to detect CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT from the compiler by
|
||||
# looking at which cudart library exists in the implicit link libraries passed
|
||||
# to the host linker.
|
||||
if(CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT MATCHES "link\\.exe [^\n]*cudart_static\\.lib")
|
||||
set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC")
|
||||
elseif(CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT MATCHES "link\\.exe [^\n]*cudart\\.lib")
|
||||
set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "SHARED")
|
||||
else()
|
||||
set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "NONE")
|
||||
endif()
|
||||
set(_SET_CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT
|
||||
"set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT \"${CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT}\")")
|
||||
elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
|
||||
if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
|
||||
string(REGEX MATCHALL "-target-cpu sm_([0-9]+)" _clang_target_cpus "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
|
||||
|
||||
foreach(_clang_target_cpu ${_clang_target_cpus})
|
||||
|
||||
@@ -106,6 +106,8 @@ function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var fwk_var log_var obj
|
||||
string(APPEND log " arg [${arg}] ==> dir [${dir}]\n")
|
||||
elseif(is_msvc AND "${arg}" STREQUAL "-link")
|
||||
string(APPEND log " arg [${arg}] ==> ignore MSVC cl option\n")
|
||||
elseif(is_msvc AND "${arg}" MATCHES "^[-/][Ii][Mm][Pp][Ll][Ii][Bb]:")
|
||||
string(APPEND log " arg [${arg}] ==> ignore MSVC link option\n")
|
||||
elseif(is_msvc AND "${arg}" MATCHES "^(.*\\.[Ll][Ii][Bb])$")
|
||||
set(lib "${CMAKE_MATCH_1}")
|
||||
list(APPEND implicit_libs_tmp ${lib})
|
||||
|
||||
@@ -52,6 +52,9 @@ macro(cmake_nvcc_parse_implicit_info lang lang_var_)
|
||||
string(APPEND _nvcc_log " considering line: [${_nvcc_output_line}]\n")
|
||||
if("${_nvcc_output_line}" MATCHES "^ *nvlink")
|
||||
string(APPEND _nvcc_log " ignoring nvlink line\n")
|
||||
elseif("${_nvcc_output_line}" MATCHES "(link\\.exe .*CompilerId${lang}\\.exe.*)$")
|
||||
set(_nvcc_link_line "${CMAKE_MATCH_1}")
|
||||
string(APPEND _nvcc_log " extracted link line: [${_nvcc_link_line}]\n")
|
||||
elseif(_nvcc_libraries)
|
||||
if("${_nvcc_output_line}" MATCHES "(@\"?((tmp/)?a\\.exe\\.res)\"?)")
|
||||
set(_nvcc_link_res_arg "${CMAKE_MATCH_1}")
|
||||
|
||||
Reference in New Issue
Block a user