fetch_ml/native/nvml_gpu/CMakeLists.txt
Jeremie Fraeys c56e53cb52
fix: NVML stub support for systems without NVIDIA drivers
- Add stub implementation in nvml_gpu.cpp when NVML not available
- CMakeLists.txt checks for both NVML library and headers
- Build succeeds on macOS/non-NVIDIA systems with stub
- Runtime detection via gpu_is_available() prevents runtime errors
2026-02-21 15:16:54 -05:00

45 lines
1.1 KiB
CMake

add_library(nvml_gpu SHARED
nvml_gpu.cpp
)
target_include_directories(nvml_gpu PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
# Find NVML library
find_library(NVML_LIBRARY nvidia-ml
PATHS
/usr/lib/x86_64-linux-gnu
/usr/local/cuda/lib64
/usr/lib64
/usr/lib
/opt/cuda/lib64
DOC "NVIDIA Management Library"
)
# Check for NVML header
find_path(NVML_INCLUDE_DIR nvml.h
PATHS
/usr/include
/usr/local/cuda/include
/opt/cuda/include
)
if(NVML_LIBRARY AND NVML_INCLUDE_DIR)
target_link_libraries(nvml_gpu PRIVATE ${NVML_LIBRARY})
target_include_directories(nvml_gpu PRIVATE ${NVML_INCLUDE_DIR})
message(STATUS "Found NVML: ${NVML_LIBRARY}")
message(STATUS "NVML include: ${NVML_INCLUDE_DIR}")
else()
message(WARNING "NVML not found. GPU monitoring will be disabled.")
# Create stub library
target_compile_definitions(nvml_gpu PRIVATE NVML_STUB)
endif()
set_target_properties(nvml_gpu PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
POSITION_INDEPENDENT_CODE ON
C_STANDARD 11
CXX_STANDARD 17
)