mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
CUDAToolkit: Refactor find failure error messages to a single macro
This commit is contained in:
@@ -869,6 +869,28 @@ else()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
macro(_CUDAToolkit_find_failure_message _CUDAToolkit_fail_mode)
|
||||
# Declare error messages now, print later depending on find_package args.
|
||||
if("${_CUDAToolkit_fail_mode}" STREQUAL "GUESS")
|
||||
set(_CUDAToolkit_fail_message "Could not find `nvcc` executable in any searched paths, please set CUDAToolkit_ROOT")
|
||||
elseif("${_CUDAToolkit_fail_mode}" STREQUAL "VARIABLE")
|
||||
set(_CUDAToolkit_fail_message "Could not find `nvcc` executable in path specified by variable CUDAToolkit_ROOT=${CUDAToolkit_ROOT}")
|
||||
else()
|
||||
set(_CUDAToolkit_fail_message "Could not find `nvcc` executable in path specified by environment variable CUDAToolkit_ROOT=$ENV{CUDAToolkit_ROOT}")
|
||||
endif()
|
||||
|
||||
if(CUDAToolkit_FIND_REQUIRED)
|
||||
message(FATAL_ERROR ${_CUDAToolkit_fail_message})
|
||||
else()
|
||||
if(NOT CUDAToolkit_FIND_QUIETLY)
|
||||
message(STATUS ${_CUDAToolkit_fail_message})
|
||||
endif()
|
||||
set(CUDAToolkit_FOUND FALSE)
|
||||
unset(_CUDAToolkit_fail_message)
|
||||
return()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# For NVCC we can easily deduce the SDK binary directory from the compiler path.
|
||||
if(CMAKE_CUDA_COMPILER_LOADED AND NOT CUDAToolkit_BIN_DIR AND CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
|
||||
get_filename_component(CUDAToolkit_BIN_DIR "${CMAKE_CUDA_COMPILER}" DIRECTORY)
|
||||
@@ -888,44 +910,17 @@ else()
|
||||
endif()
|
||||
|
||||
# If the user specified CUDAToolkit_ROOT but the toolkit could not be found, this is an error.
|
||||
if(NOT CUDAToolkit_ROOT_DIR AND (DEFINED CUDAToolkit_ROOT OR DEFINED ENV{CUDAToolkit_ROOT}))
|
||||
# Declare error messages now, print later depending on find_package args.
|
||||
set(fail_base "Could not find nvcc executable in path specified by")
|
||||
set(cuda_root_fail "${fail_base} CUDAToolkit_ROOT=${CUDAToolkit_ROOT}")
|
||||
set(env_cuda_root_fail "${fail_base} environment variable CUDAToolkit_ROOT=$ENV{CUDAToolkit_ROOT}")
|
||||
|
||||
if(CUDAToolkit_FIND_REQUIRED)
|
||||
if(DEFINED CUDAToolkit_ROOT)
|
||||
message(FATAL_ERROR ${cuda_root_fail})
|
||||
elseif(DEFINED ENV{CUDAToolkit_ROOT})
|
||||
message(FATAL_ERROR ${env_cuda_root_fail})
|
||||
endif()
|
||||
else()
|
||||
if(NOT CUDAToolkit_FIND_QUIETLY)
|
||||
if(DEFINED CUDAToolkit_ROOT)
|
||||
message(STATUS ${cuda_root_fail})
|
||||
elseif(DEFINED ENV{CUDAToolkit_ROOT})
|
||||
message(STATUS ${env_cuda_root_fail})
|
||||
endif()
|
||||
endif()
|
||||
set(CUDAToolkit_FOUND FALSE)
|
||||
unset(fail_base)
|
||||
unset(cuda_root_fail)
|
||||
unset(env_cuda_root_fail)
|
||||
return()
|
||||
endif()
|
||||
if(NOT CUDAToolkit_ROOT_DIR AND DEFINED CUDAToolkit_ROOT)
|
||||
_CUDAToolkit_find_failure_message(VARIABLE)
|
||||
elseif(NOT CUDAToolkit_ROOT_DIR AND DEFINED ENV{CUDAToolkit_ROOT})
|
||||
_CUDAToolkit_find_failure_message(ENV)
|
||||
endif()
|
||||
|
||||
# Try guessing where CUDA is installed
|
||||
if(NOT CUDAToolkit_ROOT_DIR)
|
||||
_CUDAToolkit_guess_root_dir()
|
||||
if(NOT CUDAToolkit_ROOT_DIR)
|
||||
set(CUDAToolkit_FOUND FALSE)
|
||||
if(CUDAToolkit_FIND_REQUIRED)
|
||||
message(FATAL_ERROR "Could not find `nvcc`, please set CUDAToolkit_ROOT.")
|
||||
elseif(NOT CUDAToolkit_FIND_QUIETLY)
|
||||
message(STATUS "Could not find `nvcc`, please set CUDAToolkit_ROOT.")
|
||||
endif()
|
||||
return()
|
||||
_CUDAToolkit_find_failure_message(GUESS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
Reference in New Issue
Block a user