summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle Edwards <kyedwards@nvidia.com>2024-07-12 20:23:21 (GMT)
committerKyle Edwards <kyedwards@nvidia.com>2024-07-15 14:35:36 (GMT)
commitb3f02006f0893c25a327d5bbdf7a4c68d0ac6028 (patch)
tree5dddb50b362b733dbcf402a483dcdf49ef974eba
parent228fd59897dd2f58ecfd83e3d98348339b38b52c (diff)
downloadCMake-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.rst5
-rw-r--r--Modules/FindCUDAToolkit.cmake16
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