diff options
author | Kyle Edwards <kyedwards@nvidia.com> | 2024-07-12 20:23:21 (GMT) |
---|---|---|
committer | Kyle Edwards <kyedwards@nvidia.com> | 2024-07-15 14:35:36 (GMT) |
commit | b3f02006f0893c25a327d5bbdf7a4c68d0ac6028 (patch) | |
tree | 5dddb50b362b733dbcf402a483dcdf49ef974eba | |
parent | 228fd59897dd2f58ecfd83e3d98348339b38b52c (diff) | |
download | CMake-b3f02006f0893c25a327d5bbdf7a4c68d0ac6028.zip CMake-b3f02006f0893c25a327d5bbdf7a4c68d0ac6028.tar.gz CMake-b3f02006f0893c25a327d5bbdf7a4c68d0ac6028.tar.bz2 |
FindCUDAToolkit: Add ability to find static version of nvml
Fixes: #26131
-rw-r--r-- | Help/release/dev/cuda-static-nvml.rst | 5 | ||||
-rw-r--r-- | Modules/FindCUDAToolkit.cmake | 16 |
2 files changed, 17 insertions, 4 deletions
diff --git a/Help/release/dev/cuda-static-nvml.rst b/Help/release/dev/cuda-static-nvml.rst new file mode 100644 index 0000000..e44b078 --- /dev/null +++ b/Help/release/dev/cuda-static-nvml.rst @@ -0,0 +1,5 @@ +cuda-static-nvml +---------------- + +* The :module:`FindCUDAToolkit` module now provides a ``CUDA::nvml_static`` + target. diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake index da33be2..f68d629 100644 --- a/Modules/FindCUDAToolkit.cmake +++ b/Modules/FindCUDAToolkit.cmake @@ -444,11 +444,14 @@ nvidia-ML """"""""" The `NVIDIA Management Library <https://developer.nvidia.com/management-library-nvml>`_. -This is a shared library only. Targets Created: - ``CUDA::nvml`` +- ``CUDA::nvml_static`` starting in CUDA 12.4 + +.. versionadded:: 3.31 + Added ``CUDA::nvml_static``. .. _`cuda_toolkit_nvToolsExt`: @@ -1110,9 +1113,13 @@ unset(CUDAToolkit_INCLUDE_DIRECTORIES) if(CUDAToolkit_FOUND) function(_CUDAToolkit_find_and_add_import_lib lib_name) - cmake_parse_arguments(arg "" "" "ALT;DEPS;EXTRA_PATH_SUFFIXES;EXTRA_INCLUDE_DIRS" ${ARGN}) + cmake_parse_arguments(arg "" "" "ALT;DEPS;EXTRA_PATH_SUFFIXES;EXTRA_INCLUDE_DIRS;ONLY_SEARCH_FOR" ${ARGN}) - set(search_names ${lib_name} ${arg_ALT}) + if(arg_ONLY_SEARCH_FOR) + set(search_names ${arg_ONLY_SEARCH_FOR}) + else() + set(search_names ${lib_name} ${arg_ALT}) + endif() find_library(CUDA_${lib_name}_LIBRARY NAMES ${search_names} @@ -1136,7 +1143,7 @@ if(CUDAToolkit_FOUND) PATH_SUFFIXES lib64/stubs lib/x64/stubs lib/stubs stubs ) endif() - if(CUDA_${lib_name}_LIBRARY MATCHES "/stubs/" AND NOT WIN32) + if(CUDA_${lib_name}_LIBRARY MATCHES "/stubs/" AND NOT CUDA_${lib_name}_LIBRARY MATCHES "\\.a$" AND NOT WIN32) # Use a SHARED library with IMPORTED_IMPLIB, but not IMPORTED_LOCATION, # to indicate that the stub is for linkers but not dynamic loaders. # It will not contribute any RPATH entry. When encountered as @@ -1345,6 +1352,7 @@ 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(WIN32) # nvtools can be installed outside the CUDA toolkit directory |