# Interface source targets keep the shared grouping used by the tests while # compiling the implementation directly into each consuming executable. This # avoids producing intermediate base/sys .lib archives with Visual Studio. add_library(tiny-convmem-base INTERFACE) target_sources(tiny-convmem-base INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/base/allocator.c") target_include_directories(tiny-convmem-base INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}") target_compile_features(tiny-convmem-base INTERFACE c_std_17) add_library(tiny-convmem-sys INTERFACE) target_sources(tiny-convmem-sys INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/sys/system.c" "${CMAKE_CURRENT_SOURCE_DIR}/sys/encoding.c" ) target_include_directories(tiny-convmem-sys INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}") target_compile_features(tiny-convmem-sys INTERFACE c_std_17) target_link_libraries(tiny-convmem-sys INTERFACE tiny-convmem-base) if(WIN32) target_link_libraries(tiny-convmem-sys INTERFACE bcrypt shell32) endif() add_executable(tiny-convmem-mcp app/main.c domain/message.c domain/search.c storage/codec.c storage/store.c mcp/json.c mcp/server.c mcp/tools/common/common.c mcp/tools/common/context.c mcp/tools/common/history.c mcp/tools/common/memory_index.c mcp/tools/common/registry.c mcp/tools/delete_message.c mcp/tools/get_system_health.c mcp/tools/import_messages.c mcp/tools/read_messages.c mcp/tools/rebuild_index.c mcp/tools/search_messages.c mcp/tools/update_message.c mcp/tools/write_message.c ) target_include_directories(tiny-convmem-mcp PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/third_party/mcpc/src" ) target_link_libraries(tiny-convmem-mcp PRIVATE mcpc::mcpc tiny-convmem-sys) target_compile_features(tiny-convmem-mcp PRIVATE c_std_17) if(MSVC) target_compile_options(tiny-convmem-base INTERFACE /utf-8 /W4) target_compile_options(tiny-convmem-sys INTERFACE /utf-8 /W4) target_compile_options(tiny-convmem-mcp PRIVATE /utf-8 /W4) endif()