瀏覽代碼

Merge topic 'implicit-link-info-msvc'

93f2cd5b7c CMakeParseImplicitLinkInfo: Better detection of msvc

Acked-by: Kitware Robot <[email protected]>
Tested-by: buildbot <[email protected]>
Merge-request: !7619
Brad King 3 年之前
父節點
當前提交
138337f53c

+ 2 - 1
Modules/CMakeDetermineCUDACompiler.cmake

@@ -503,7 +503,8 @@ elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
                                    CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES
                                    CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
                                    log
-                                   "${CMAKE_CUDA_IMPLICIT_OBJECT_REGEX}")
+                                   "${CMAKE_CUDA_IMPLICIT_OBJECT_REGEX}"
+                                   LANGUAGE CUDA)
 
     # 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.

+ 2 - 1
Modules/CMakeDetermineCompilerABI.cmake

@@ -149,7 +149,8 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
       if(CMAKE_${lang}_VERBOSE_FLAG)
         CMAKE_PARSE_IMPLICIT_LINK_INFO("${OUTPUT}" implicit_libs implicit_dirs implicit_fwks log
           "${CMAKE_${lang}_IMPLICIT_OBJECT_REGEX}"
-          COMPUTE_IMPLICIT_OBJECTS implicit_objs)
+          COMPUTE_IMPLICIT_OBJECTS implicit_objs
+          LANGUAGE ${lang})
         file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
           "Parsed ${lang} implicit link information from above output:\n${log}\n\n")
       endif()

+ 6 - 1
Modules/CMakeParseImplicitLinkInfo.cmake

@@ -22,7 +22,7 @@ function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var fwk_var log_var obj
   set(log "")
 
   set(keywordArgs)
-  set(oneValueArgs COMPUTE_IMPLICIT_OBJECTS)
+  set(oneValueArgs COMPUTE_IMPLICIT_OBJECTS LANGUAGE)
   set(multiValueArgs )
   cmake_parse_arguments(EXTRA_PARSE "${keywordArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 
@@ -76,6 +76,11 @@ function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var fwk_var log_var obj
       endif()
     endif()
     set(is_msvc 0)
+    if(EXTRA_PARSE_LANGUAGE AND
+      ("x${CMAKE_${EXTRA_PARSE_LANGUAGE}_ID}" STREQUAL "xMSVC" OR
+       "x${CMAKE_${EXTRA_PARSE_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC"))
+      set(is_msvc 1)
+    endif()
     set(search_static 0)
     if("${cmd}" MATCHES "${linker_regex}")
       string(APPEND log "  link line: [${line}]\n")

+ 1 - 0
Modules/FindOpenMP.cmake

@@ -238,6 +238,7 @@ function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
           OpenMP_${LANG}_IMPLICIT_FWK_DIRS
           OpenMP_${LANG}_LOG_VAR
           "${CMAKE_${LANG}_IMPLICIT_OBJECT_REGEX}"
+          LANGUAGE ${LANG}
         )
 
         file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log

文件差異過大導致無法顯示
+ 62 - 0
Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in


+ 4 - 1
Tests/Cuda/SeparableCompCXXOnly/CMakeLists.txt

@@ -1,3 +1,6 @@
-project(SeparableCompCXXOnly LANGUAGES CXX CUDA)
+# Set CMAKE_CUDA_SEPARABLE_COMPILATION before `project`
+# so we verify that compiler/linker verbose extraction
+# works as required when a `dlink` is part of it
 set(CMAKE_CUDA_SEPARABLE_COMPILATION ON)
+project(SeparableCompCXXOnly LANGUAGES CXX CUDA)
 add_executable(SeparableCompCXXOnly main.cpp)

+ 1 - 0
Tests/RunCMake/ParseImplicitLinkInfo/ParseImplicitLinkInfo.cmake

@@ -154,6 +154,7 @@ foreach(t ${targets})
 
   cmake_parse_implicit_link_info("${input}" implicit_libs idirs implicit_fwks log
       "${CMAKE_${lang}_IMPLICIT_OBJECT_REGEX}"
+      LANGUAGE ${lang}
       COMPUTE_IMPLICIT_OBJECTS implicit_objs)
 
   set(library_arch)

部分文件因文件數量過多而無法顯示