FindCUDSS.cmake 2.6 KB

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