FindCUDAToolkit: Link CUDA::nvml_static against DL libraries

And fix a potential failure mode where CUDA::sanitizer was already
added in a different project.
This commit is contained in:
Kyle Edwards committed 2026-05-13 16:30:30 -04:00
1 parent 3d1f9d3dee
commit af0828cbbf
1 file changed
+24 -17
+24 -17
View File
@@ -1486,7 +1486,12 @@ if(CUDAToolkit_FOUND)
endif()
_CUDAToolkit_find_and_add_import_lib(nvml ALT nvidia-ml nvml)
_CUDAToolkit_find_and_add_import_lib(nvml_static ONLY_SEARCH_FOR libnvidia-ml.a libnvml.a)
if(NOT TARGET CUDA::nvml_static)
_CUDAToolkit_find_and_add_import_lib(nvml_static ONLY_SEARCH_FOR libnvidia-ml.a libnvml.a)
if(TARGET CUDA::nvml_static)
target_link_libraries(CUDA::nvml_static INTERFACE ${CMAKE_DL_LIBS})
endif()
endif()
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 10.0)
# Header-only variant. Uses dlopen().
@@ -1538,22 +1543,24 @@ if(CUDAToolkit_FOUND)
set_property(TARGET CUDA::bin2c PROPERTY IMPORTED_LOCATION "${CUDA_bin2c_EXECUTABLE}")
endif()
_CUDAToolkit_find_and_add_import_lib(
sanitizer
ONLY_SEARCH_FOR sanitizer-public
EXTRA_PATH_SUFFIXES
"../compute-sanitizer"
"../../../compute-sanitizer"
"../Sanitizer"
"../../../Sanitizer"
"../extras/Sanitizer"
"../../../extras/Sanitizer"
EXTRA_INCLUDE_DIRS "${CUDAToolkit_CUPTI_INCLUDE_DIR}"
)
if(TARGET CUDA::sanitizer)
get_property(loc TARGET CUDA::sanitizer PROPERTY IMPORTED_LOCATION)
get_filename_component(sanitizer_dir "${loc}" DIRECTORY)
target_include_directories(CUDA::sanitizer INTERFACE "${sanitizer_dir}/include")
if(NOT TARGET CUDA::sanitizer)
_CUDAToolkit_find_and_add_import_lib(
sanitizer
ONLY_SEARCH_FOR sanitizer-public
EXTRA_PATH_SUFFIXES
"../compute-sanitizer"
"../../../compute-sanitizer"
"../Sanitizer"
"../../../Sanitizer"
"../extras/Sanitizer"
"../../../extras/Sanitizer"
EXTRA_INCLUDE_DIRS "${CUDAToolkit_CUPTI_INCLUDE_DIR}"
)
if(TARGET CUDA::sanitizer)
get_property(loc TARGET CUDA::sanitizer PROPERTY IMPORTED_LOCATION)
get_filename_component(sanitizer_dir "${loc}" DIRECTORY)
target_include_directories(CUDA::sanitizer INTERFACE "${sanitizer_dir}/include")
endif()
endif()
endif()