cmake_minimum_required(VERSION 3.10)

project(kyml LANGUAGES C CXX)

get_filename_component(SOURCE_TOP_DIR "${CMAKE_CURRENT_SOURCE_DIR}" ABSOLUTE)

set(DEBUG_LOG_LEVEL LOG_ERROR CACHE STRING "Debug value for compilation")
add_definitions(-DDEBUG_LOG_LEVEL=${DEBUG_LOG_LEVEL})
message("DEBUG_LOG_LEVEL: ${DEBUG_LOG_LEVEL}")

# Coverage instrumentation (gcov / gcovr).
# Notes:
# - Must be enabled for both the library and the tests to collect coverage.
# - Prefer Debug (or RelWithDebInfo) when generating reports.
option(KYML_ENABLE_COVERAGE "Enable coverage compile/link flags" OFF)
if(KYML_ENABLE_COVERAGE)
    if (CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
        add_compile_options(-O0 -g --coverage)
        add_link_options(--coverage)
    else()
        message(WARNING "KYML_ENABLE_COVERAGE is ON but compiler is not GCC/Clang; coverage flags may not work.")
    endif()
endif()


get_filename_component(SOURCE_TOP_DIR "${CMAKE_CURRENT_SOURCE_DIR}" ABSOLUTE)

set(SOURCE_TOP_DIR_CACHE "${SOURCE_TOP_DIR}" CACHE INTERNAL "Parent src directory path")

add_library(kyml SHARED
  common/plugin_manager.c
  common/pci_sysfs.c
)

include_directories(./include ./common)

target_compile_options("kyml" PRIVATE)

install(TARGETS kyml
	LIBRARY DESTINATION lib/)

install(DIRECTORY include/ DESTINATION include/kyml/)

install(DIRECTORY conf/ DESTINATION share/kyml)




add_subdirectory(plugins/xpu/nvml)
add_subdirectory(plugins/xpu/rocm)
add_subdirectory(plugins/xpu/intel)
add_subdirectory(plugins/xpu/glenfly)
add_subdirectory(plugins/xpu/houmo)

option(KYML_BUILD_TESTS "Build unit tests (CTest)" OFF)
if(KYML_BUILD_TESTS)
	include(CTest)
	add_subdirectory(tests)
endif()

add_subdirectory(src)
