diff options
author | Brad King <brad.king@kitware.com> | 2023-09-14 15:18:47 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-09-21 19:34:27 (GMT) |
commit | 69a5ef7cc0011e9c9782a9f0294dced465702e3b (patch) | |
tree | 60ed83efe8fe5bb351795e61bb21e8df214180c7 /Modules | |
parent | 8a966debe30324c38d5ab91adaeec10c0d6cafd3 (diff) | |
download | CMake-69a5ef7cc0011e9c9782a9f0294dced465702e3b.zip CMake-69a5ef7cc0011e9c9782a9f0294dced465702e3b.tar.gz CMake-69a5ef7cc0011e9c9782a9f0294dced465702e3b.tar.bz2 |
CUDA: Simplify isolation of work variables for determining compiler
Unset variables as soon as we are done with them.
Rename one work variable to a private name.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CMakeDetermineCUDACompiler.cmake | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/Modules/CMakeDetermineCUDACompiler.cmake b/Modules/CMakeDetermineCUDACompiler.cmake index a5008e1..d1edec5 100644 --- a/Modules/CMakeDetermineCUDACompiler.cmake +++ b/Modules/CMakeDetermineCUDACompiler.cmake @@ -98,12 +98,14 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN) ENV CUDA_PATH PATH_SUFFIXES bin NO_DEFAULT_PATH + NO_CACHE ) # If we didn't find NVCC, then try the default paths. find_program(_CUDA_NVCC_EXECUTABLE NAMES nvcc nvcc.exe PATH_SUFFIXES bin + NO_CACHE ) # If the user specified CUDAToolkit_ROOT but nvcc could not be found, this is an error. @@ -168,6 +170,7 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN) NAMES nvcc nvcc.exe PATHS ${search_paths} PATH_SUFFIXES bin + NO_CACHE ) # We are done with these variables now, cleanup. @@ -200,7 +203,7 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN) #We require the path to end in `/nvvm/libdevice' if(_CUDA_NVVMIR_LIBRARY_DIR MATCHES "nvvm/libdevice$") get_filename_component(_CUDA_NVVMIR_LIBRARY_DIR "${_CUDA_NVVMIR_LIBRARY_DIR}/../.." ABSOLUTE) - set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR "${_CUDA_NVVMIR_LIBRARY_DIR}") + set(_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR "${_CUDA_NVVMIR_LIBRARY_DIR}") endif() unset(_CUDA_NVVMIR_LIBRARY_DIR) @@ -215,8 +218,8 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN) # We first check for a non-scattered installation to prefer it over a scattered installation. # CMAKE_CUDA_COMPILER_LIBRARY_ROOT contains the device library. - if(DEFINED CMAKE_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR) - set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR}") + if(DEFINED _CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR) + set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR}") elseif(EXISTS "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/nvvm/libdevice") set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}") elseif(CMAKE_SYSROOT_LINK AND EXISTS "${CMAKE_SYSROOT_LINK}/usr/lib/cuda/nvvm/libdevice") @@ -226,7 +229,7 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN) else() message(FATAL_ERROR "Couldn't find CUDA library root.") endif() - unset(CMAKE_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR) + unset(_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR) # CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT contains the linking stubs necessary for device linking and other low-level library files. if(CMAKE_SYSROOT_LINK AND EXISTS "${CMAKE_SYSROOT_LINK}/usr/lib/nvidia-cuda-toolkit/bin/crt/link.stub") @@ -246,6 +249,9 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN) if(CMAKE_CUDA_COMPILER_ID_OUTPUT MATCHES [=[V([0-9]+\.[0-9]+\.[0-9]+)]=]) set(CMAKE_CUDA_COMPILER_TOOLKIT_VERSION "${CMAKE_MATCH_1}") endif() + + # Don't leak variables unnecessarily to user code. + unset(_CUDA_NVCC_EXECUTABLE) endif() set(CMAKE_CUDA_COMPILER_ID_FLAGS_ALWAYS "-v") @@ -409,6 +415,12 @@ elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang") set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "${_CUDA_LIBRARY_DIR}") set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "") set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") + + # Don't leak variables unnecessarily to user code. + unset(_CUDA_INCLUDE_DIR) + unset(_CUDA_LIBRARY_DIR) + unset(_CUDA_TARGET_DIR) + unset(_CUDA_TARGET_NAME) elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA") set(_nvcc_log "") string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}") @@ -609,13 +621,6 @@ configure_file(${CMAKE_ROOT}/Modules/CMakeCUDACompiler.cmake.in @ONLY ) -# Don't leak variables unnecessarily to user code. -unset(_CUDA_INCLUDE_DIR CACHE) -unset(_CUDA_NVCC_EXECUTABLE CACHE) -unset(_CUDA_LIBRARY_DIR) -unset(_CUDA_TARGET_DIR) -unset(_CUDA_TARGET_NAME) - unset(architectures_detected) set(CMAKE_CUDA_COMPILER_ENV_VAR "CUDACXX") |