Jelajahi Sumber

Find{Threads,MPI}: Add support for CUDA with Clang

Currently CMake passes `-Xcompiler -pthread` flags to CUDA compilers
irrespective of the actual CUDA compiler ID.  This makes sure the
additional `-Xcompiler` flag is only used with nvcc.
Tobias Ribizel 5 tahun lalu
induk
melakukan
80d37167fe
2 mengubah file dengan 3 tambahan dan 3 penghapusan
  1. 1 1
      Modules/FindMPI.cmake
  2. 2 2
      Modules/FindThreads.cmake

+ 1 - 1
Modules/FindMPI.cmake

@@ -1154,7 +1154,7 @@ macro(_MPI_create_imported_target LANG)
   endif()
 
   # When this is consumed for compiling CUDA, use '-Xcompiler' to wrap '-pthread'.
-  string(REPLACE "-pthread" "$<$<COMPILE_LANGUAGE:CUDA>:SHELL:-Xcompiler >-pthread"
+  string(REPLACE "-pthread" "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler >-pthread"
     _MPI_${LANG}_COMPILE_OPTIONS "${MPI_${LANG}_COMPILE_OPTIONS}")
   set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_COMPILE_OPTIONS "${_MPI_${LANG}_COMPILE_OPTIONS}")
   unset(_MPI_${LANG}_COMPILE_OPTIONS)

+ 2 - 2
Modules/FindThreads.cmake

@@ -238,8 +238,8 @@ if(THREADS_FOUND AND NOT TARGET Threads::Threads)
 
   if(THREADS_HAVE_PTHREAD_ARG)
     set_property(TARGET Threads::Threads
-                 PROPERTY INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANGUAGE:CUDA>:SHELL:-Xcompiler -pthread>"
-                                                    "$<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:-pthread>")
+                 PROPERTY INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler -pthread>"
+                                                    "$<$<NOT:$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>>:-pthread>")
   endif()
 
   if(CMAKE_THREAD_LIBS_INIT)