cmake_minimum_required(VERSION 3.22) project(metal_kompanion_mcp LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) option(KOM_ENABLE_PG "Enable Postgres-backed DAL support" ON) set(KOM_HAVE_PG OFF) if (KOM_ENABLE_PG) find_package(PostgreSQL QUIET) find_package(pqxx QUIET) if (PostgreSQL_FOUND AND pqxx_FOUND) set(KOM_HAVE_PG ON) endif() endif() if (KOM_HAVE_PG) message(STATUS "kom_dal: Postgres support enabled (HAVE_PG)") else() message(STATUS "kom_dal: Postgres support disabled (pqxx/libpq not found)") endif() set(KOM_HAVE_PG ${KOM_HAVE_PG} CACHE INTERNAL "kom_dal has Postgres backend") set(KOMPANION_KCONFIG_TARGET "") find_package(KF6Config QUIET) if (KF6Config_FOUND) set(KOMPANION_KCONFIG_TARGET KF6::ConfigCore) else() find_package(KF5Config QUIET) if (KF5Config_FOUND) set(KOMPANION_KCONFIG_TARGET KF5::ConfigCore) endif() endif() if (KOMPANION_KCONFIG_TARGET STREQUAL "") message(WARNING "KConfig (KF6/KF5) not found; defaulting to environment-based configuration.") endif() option(BUILD_KOMPANION_CLI "Build Kompanion Qt command-line client" ON) if (BUILD_KOMPANION_CLI) find_package(Qt6 COMPONENTS Core QUIET) if (NOT Qt6_FOUND) message(WARNING "Qt6 Core not found; disabling Kompanion CLI.") set(BUILD_KOMPANION_CLI OFF) endif() endif() # Placeholder: find Qt and qtmcp when available # find_package(Qt6 COMPONENTS Core Network REQUIRED) # find_package(qtmcp REQUIRED) add_subdirectory(src/dal) add_executable(kom_mcp src/main.cpp ) target_include_directories(kom_mcp PRIVATE src) target_link_libraries(kom_mcp PRIVATE kom_dal) target_compile_definitions(kom_mcp PRIVATE PROJECT_SOURCE_DIR="${CMAKE_SOURCE_DIR}") if (NOT KOMPANION_KCONFIG_TARGET STREQUAL "") target_link_libraries(kom_mcp PRIVATE ${KOMPANION_KCONFIG_TARGET}) target_compile_definitions(kom_mcp PRIVATE HAVE_KCONFIG) endif() install(TARGETS kom_mcp RUNTIME DESTINATION bin) option(BUILD_TESTS "Build tests" ON) if (BUILD_KOMPANION_CLI) add_executable(kompanion src/cli/KompanionApp.cpp ) target_include_directories(kompanion PRIVATE src) target_link_libraries(kompanion PRIVATE Qt6::Core kom_dal) target_compile_definitions(kompanion PRIVATE PROJECT_SOURCE_DIR="${CMAKE_SOURCE_DIR}") if (NOT KOMPANION_KCONFIG_TARGET STREQUAL "") target_link_libraries(kompanion PRIVATE ${KOMPANION_KCONFIG_TARGET}) target_compile_definitions(kompanion PRIVATE HAVE_KCONFIG) endif() install(TARGETS kompanion RUNTIME DESTINATION bin) endif() if (BUILD_TESTS) enable_testing() add_subdirectory(tests) endif()