89 lines
2.5 KiB
CMake
89 lines
2.5 KiB
CMake
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()
|