fetch_ml/native/nvml_gpu/CMakeLists.txt
Jeremie Fraeys be39b37aec
feat: native GPU detection and NVML bridge for macOS and Linux
- Add dynamic NVML loading for Linux GPU detection
- Add macOS GPU detection via IOKit framework
- Add Zig NVML wrapper for cross-platform GPU queries
- Update native bridge to support platform-specific GPU libs
- Add CMake support for NVML dynamic library
2026-02-21 17:59:59 -05:00

49 lines
1.3 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()
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
message(WARNING "NVML not found. NVIDIA GPU monitoring will be disabled.")
else()
message(STATUS "NVML not available on ${CMAKE_SYSTEM_NAME}. Using platform-specific GPU monitoring.")
endif()
# 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
)