cmake_minimum_required(VERSION 3.16) project(ai_qos LANGUAGES CXX) find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) execute_process( COMMAND python3 -c "import pybind11, os; print(os.path.dirname(os.path.dirname(pybind11.get_include())))" OUTPUT_VARIABLE PYBIND11_ROOT OUTPUT_STRIP_TRAILING_WHITESPACE ) list(APPEND CMAKE_PREFIX_PATH "${PYBIND11_ROOT}") find_package(pybind11 CONFIG REQUIRED) pybind11_add_module(ai_qos MODULE ai_qos.cpp) target_compile_features(ai_qos PRIVATE cxx_std_11) # ---- DSMI lookup (driver SDK, not CANN-only) ---- set(_dsmi_inc_paths /usr/local/Ascend/driver/include /usr/local/Ascend/ascend-toolkit/latest/driver/include /usr/local/Ascend/driver/kernel/inc/driver ) set(_dsmi_lib_paths /usr/local/Ascend/driver/lib64/driver /usr/local/Ascend/ascend-toolkit/latest/driver/lib64 ) if(DEFINED ENV{ASCEND_HOME_PATH} AND NOT "$ENV{ASCEND_HOME_PATH}" STREQUAL "") get_filename_component(_ascend_parent "$ENV{ASCEND_HOME_PATH}" DIRECTORY) list(INSERT _dsmi_inc_paths 0 "${_ascend_parent}/driver/include" "$ENV{ASCEND_HOME_PATH}/driver/include" ) list(INSERT _dsmi_lib_paths 0 "${_ascend_parent}/driver/lib64/driver" "$ENV{ASCEND_HOME_PATH}/driver/lib64" ) endif() find_path(DSMI_INCLUDE_DIR NAMES dsmi_common_interface.h PATHS ${_dsmi_inc_paths} NO_DEFAULT_PATH ) find_library(DSMI_LIBRARY NAMES drvdsmi_host PATHS ${_dsmi_lib_paths} NO_DEFAULT_PATH ) if(NOT DSMI_INCLUDE_DIR) message(FATAL_ERROR "ai_qos: dsmi_common_interface.h not found. " "Pass -DDSMI_INCLUDE_DIR=/path/to/include" ) endif() if(NOT DSMI_LIBRARY) message(FATAL_ERROR "ai_qos: drvdsmi_host not found. " "Pass -DDSMI_LIBRARY=/path/to/libdrvdsmi_host.so" ) endif() target_include_directories(ai_qos PRIVATE ${pybind11_INCLUDE_DIRS} ${DSMI_INCLUDE_DIR} ) target_link_libraries(ai_qos PRIVATE ${DSMI_LIBRARY}) install(TARGETS ai_qos LIBRARY DESTINATION .)