FindCUSPARSELT.cmake 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # Find the CUSPARSELT library
  2. #
  3. # The following variables are optionally searched for defaults
  4. # CUSPARSELT_ROOT: Base directory where CUSPARSELT is found
  5. # CUSPARSELT_INCLUDE_DIR: Directory where CUSPARSELT header is searched for
  6. # CUSPARSELT_LIBRARY: Directory where CUSPARSELT library is searched for
  7. #
  8. # The following are set after configuration is done:
  9. # CUSPARSELT_FOUND
  10. # CUSPARSELT_INCLUDE_PATH
  11. # CUSPARSELT_LIBRARY_PATH
  12. include(FindPackageHandleStandardArgs)
  13. set(CUSPARSELT_ROOT $ENV{CUSPARSELT_ROOT_DIR} CACHE PATH "Folder containing NVIDIA cuSPARSELt")
  14. if (DEFINED $ENV{CUSPARSELT_ROOT_DIR})
  15. message(WARNING "CUSPARSELT_ROOT_DIR is deprecated. Please set CUSPARSELT_ROOT instead.")
  16. endif()
  17. list(APPEND CUSPARSELT_ROOT $ENV{CUSPARSELT_ROOT_DIR} ${CUDA_TOOLKIT_ROOT_DIR})
  18. # Compatible layer for CMake <3.12. CUSPARSELT_ROOT will be accounted in for searching paths and libraries for CMake >=3.12.
  19. list(APPEND CMAKE_PREFIX_PATH ${CUSPARSELT_ROOT})
  20. set(CUSPARSELT_INCLUDE_DIR $ENV{CUSPARSELT_INCLUDE_DIR} CACHE PATH "Folder containing NVIDIA cuSPARSELt header files")
  21. find_path(CUSPARSELT_INCLUDE_PATH cusparseLt.h
  22. HINTS ${CUSPARSELT_INCLUDE_DIR}
  23. PATH_SUFFIXES cuda/include cuda include)
  24. set(CUSPARSELT_LIBRARY $ENV{CUSPARSELT_LIBRARY} CACHE PATH "Path to the cusparselt library file (e.g., libcusparseLt.so)")
  25. set(CUSPARSELT_LIBRARY_NAME "libcusparseLt.so")
  26. if(MSVC)
  27. set(CUSPARSELT_LIBRARY_NAME "cusparseLt.lib")
  28. endif()
  29. find_library(CUSPARSELT_LIBRARY_PATH ${CUSPARSELT_LIBRARY_NAME}
  30. PATHS ${CUSPARSELT_LIBRARY}
  31. PATH_SUFFIXES lib lib64 cuda/lib cuda/lib64 lib/x64)
  32. find_package_handle_standard_args(CUSPARSELT DEFAULT_MSG CUSPARSELT_LIBRARY_PATH CUSPARSELT_INCLUDE_PATH)
  33. if(CUSPARSELT_FOUND)
  34. # Get cuSPARSELt version
  35. file(READ ${CUSPARSELT_INCLUDE_PATH}/cusparseLt.h CUSPARSELT_HEADER_CONTENTS)
  36. string(REGEX MATCH "define CUSPARSELT_VER_MAJOR * +([0-9]+)"
  37. CUSPARSELT_VERSION_MAJOR "${CUSPARSELT_HEADER_CONTENTS}")
  38. string(REGEX REPLACE "define CUSPARSELT_VER_MAJOR * +([0-9]+)" "\\1"
  39. CUSPARSELT_VERSION_MAJOR "${CUSPARSELT_VERSION_MAJOR}")
  40. string(REGEX MATCH "define CUSPARSELT_VER_MINOR * +([0-9]+)"
  41. CUSPARSELT_VERSION_MINOR "${CUSPARSELT_HEADER_CONTENTS}")
  42. string(REGEX REPLACE "define CUSPARSELT_VER_MINOR * +([0-9]+)" "\\1"
  43. CUSPARSELT_VERSION_MINOR "${CUSPARSELT_VERSION_MINOR}")
  44. string(REGEX MATCH "define CUSPARSELT_VER_PATCH * +([0-9]+)"
  45. CUSPARSELT_VERSION_PATCH "${CUSPARSELT_HEADER_CONTENTS}")
  46. string(REGEX REPLACE "define CUSPARSELT_VER_PATCH * +([0-9]+)" "\\1"
  47. CUSPARSELT_VERSION_PATCH "${CUSPARSELT_VERSION_PATCH}")
  48. # Assemble cuSPARSELt version. Use minor version since current major version is 0.
  49. if(NOT CUSPARSELT_VERSION_MINOR)
  50. set(CUSPARSELT_VERSION "?")
  51. else()
  52. set(CUSPARSELT_VERSION
  53. "${CUSPARSELT_VERSION_MAJOR}.${CUSPARSELT_VERSION_MINOR}.${CUSPARSELT_VERSION_PATCH}")
  54. endif()
  55. endif()
  56. mark_as_advanced(CUSPARSELT_ROOT CUSPARSELT_INCLUDE_DIR CUSPARSELT_LIBRARY CUSPARSELT_VERSION)