Răsfoiți Sursa

Merge topic 'cuda-host-compiler-abs-path'

fdb8f0f588 CUDA: Store CMAKE_CUDA_HOST_COMPILER as an absolute path

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10799
Brad King 5 luni în urmă
părinte
comite
76f341d374
1 a modificat fișierele cu 23 adăugiri și 0 ștergeri
  1. 23 0
      Modules/CMakeDetermineCUDACompiler.cmake

+ 23 - 0
Modules/CMakeDetermineCUDACompiler.cmake

@@ -49,6 +49,29 @@ else()
     if(NOT EXISTS ${CMAKE_CUDA_HOST_COMPILER})
       message(FATAL_ERROR "Could not find compiler set in environment variable CUDAHOSTCXX:\n$ENV{CUDAHOSTCXX}.\n${CMAKE_CUDA_HOST_COMPILER}")
     endif()
+  elseif(CMAKE_CUDA_HOST_COMPILER)
+    # We get here if CMAKE_CUDA_HOST_COMPILER was specified by the user or toolchain file.
+    if(IS_ABSOLUTE "${CMAKE_CUDA_HOST_COMPILER}")
+      # Convert to forward slashes.
+      cmake_path(CONVERT "${CMAKE_CUDA_HOST_COMPILER}" TO_CMAKE_PATH_LIST CMAKE_CUDA_HOST_COMPILER NORMALIZE)
+    else()
+      # Convert to absolute path so changes in `PATH` do not impact CUDA compilation.
+      find_program(_CMAKE_CUDA_HOST_COMPILER_PATH NO_CACHE NAMES "${CMAKE_CUDA_HOST_COMPILER}")
+      if(_CMAKE_CUDA_HOST_COMPILER_PATH)
+        set(CMAKE_CUDA_HOST_COMPILER "${_CMAKE_CUDA_HOST_COMPILER_PATH}")
+      endif()
+      unset(_CMAKE_CUDA_HOST_COMPILER_PATH)
+    endif()
+    if(NOT EXISTS "${CMAKE_CUDA_HOST_COMPILER}")
+      message(FATAL_ERROR "Could not find compiler set in variable CMAKE_CUDA_HOST_COMPILER:\n  ${CMAKE_CUDA_HOST_COMPILER}")
+    endif()
+    # If the value was cached, update the cache entry with our modifications.
+    get_property(_CMAKE_CUDA_HOST_COMPILER_CACHED CACHE CMAKE_CUDA_HOST_COMPILER PROPERTY TYPE)
+    if(_CMAKE_CUDA_HOST_COMPILER_CACHED)
+      set_property(CACHE CMAKE_CUDA_HOST_COMPILER PROPERTY VALUE "${CMAKE_CUDA_HOST_COMPILER}")
+      mark_as_advanced(CMAKE_CUDA_HOST_COMPILER)
+    endif()
+    unset(_CMAKE_CUDA_HOST_COMPILER_CACHED)
   endif()
 endif()