cmake_minimum_required(VERSION 3.16)
project(kylin-ai-subsystem-plugin-unit-tests LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)

find_package(Qt5 REQUIRED COMPONENTS Core)
find_package(GTest REQUIRED)

if(NOT DEFINED PLUGIN_SO_PATH OR PLUGIN_SO_PATH STREQUAL "")
    message(FATAL_ERROR "PLUGIN_SO_PATH is required, please pass -DPLUGIN_SO_PATH=<path-to-so>")
endif()

if(NOT EXISTS "${PLUGIN_SO_PATH}")
    message(FATAL_ERROR "PLUGIN_SO_PATH does not exist: ${PLUGIN_SO_PATH}")
endif()

get_filename_component(PLUGIN_SO_DIR "${PLUGIN_SO_PATH}" DIRECTORY)

get_filename_component(PLUGIN_GSCHEMA_XML_PATH
    "${CMAKE_CURRENT_LIST_DIR}/../data/org.kylin-ai-subsystem-plugin.gschema.xml"
    ABSOLUTE
)
configure_file(
    "${CMAKE_CURRENT_LIST_DIR}/configmanager_test_paths.h.in"
    "${CMAKE_CURRENT_BINARY_DIR}/configmanager_test_paths.h"
    @ONLY
)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

add_executable(configmanager_test
    configmanager_test.cpp
)

target_include_directories(configmanager_test PRIVATE
    ${CMAKE_CURRENT_LIST_DIR}/..
    ${CMAKE_CURRENT_BINARY_DIR}
)

target_link_libraries(configmanager_test PRIVATE
    Qt5::Core
    GTest::GTest
    ${PLUGIN_SO_PATH}
)

set_target_properties(configmanager_test PROPERTIES
    BUILD_RPATH "${PLUGIN_SO_DIR}"
)
