# Database service - smartbotic-crm-database binary and storage library # Storage engine library add_library(smartbotic_database STATIC src/document.cpp src/collection.cpp src/collection_meta.cpp src/snapshot.cpp src/database.cpp src/config.cpp ) target_include_directories(smartbotic_database PUBLIC $ $ ) target_compile_options(smartbotic_database PRIVATE ${SMARTBOTIC_CXX_WARNINGS}) target_link_libraries(smartbotic_database PUBLIC smartbotic::common spdlog::spdlog nlohmann_json::nlohmann_json ) add_library(smartbotic::database ALIAS smartbotic_database) # gRPC service library add_library(smartbotic_database_grpc STATIC src/grpc/proto_convert.cpp src/grpc/document_service.cpp src/grpc/collection_service.cpp src/grpc/query_service.cpp src/grpc/admin_service.cpp src/grpc/subscription_service.cpp src/grpc/server.cpp ) target_include_directories(smartbotic_database_grpc PUBLIC $ $ ) # Use relaxed warnings for gRPC targets (abseil uses __int128 which triggers -Wpedantic) set(SMARTBOTIC_GRPC_WARNINGS -Wall -Wextra -Werror -Wno-unused-parameter -Wno-dangling-reference -Wno-pedantic # Required for abseil __int128 support -Wno-overflow # Required for abseil hash_set.h ) target_compile_options(smartbotic_database_grpc PRIVATE ${SMARTBOTIC_GRPC_WARNINGS}) target_link_libraries(smartbotic_database_grpc PUBLIC smartbotic::database smartbotic::proto spdlog::spdlog ) add_library(smartbotic::database_grpc ALIAS smartbotic_database_grpc) # Database service executable add_executable(smartbotic-crm-database src/main.cpp ) target_include_directories(smartbotic-crm-database PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_compile_options(smartbotic-crm-database PRIVATE ${SMARTBOTIC_GRPC_WARNINGS}) target_link_libraries(smartbotic-crm-database PRIVATE smartbotic::database_grpc )