# Subdir CMake for src

add_library(kompanion_mw SHARED
  middleware/kompanioncontroller.cpp
  middleware/libkiexecutor.cpp
  middleware/regexregistry.cpp
  middleware/guardrailspolicy.cpp
)

find_package(Qt6 REQUIRED COMPONENTS Core DBus)

set(KOMPANION_CONTROLLER_DBUS_XML ${CMAKE_CURRENT_SOURCE_DIR}/../docs/dbus/org.kde.kompanion.controller.xml)
set(KOMPANION_EXECUTOR_DBUS_XML ${CMAKE_CURRENT_SOURCE_DIR}/../docs/dbus/org.kde.kompanion.executor.xml)

qt_add_dbus_adaptor(
  KOMPANION_DBUS_ADAPTOR_SRCS
  ${KOMPANION_CONTROLLER_DBUS_XML}
  ${CMAKE_CURRENT_SOURCE_DIR}/middleware/kompanioncontroller.h KompanionController
)

qt_add_dbus_interface(
  KOMPANION_DBUS_INTERFACE_SRCS
  ${KOMPANION_EXECUTOR_DBUS_XML}
  OrgKdeKompanionExecutor
)

set_target_properties(kompanion_mw PROPERTIES CXX_STANDARD 20)

target_include_directories(kompanion_mw PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/middleware)

target_sources(kompanion_mw PRIVATE ${KOMPANION_DBUS_ADAPTOR_SRCS} ${KOMPANION_DBUS_INTERFACE_SRCS})

target_link_libraries(kompanion_mw PRIVATE Qt6::Core Qt6::DBus)
target_compile_definitions(kompanion_mw PRIVATE KOMPANION_MW_LIBRARY)

# Example executable wiring GUI/controller/executor together could be added later.