# LLM service - smartbotic-crm-llm binary and core libraries # Core LLM library (config, providers, sessions, tools) add_library(smartbotic_llm STATIC src/config.cpp src/provider/provider_factory.cpp src/provider/openai_provider.cpp src/provider/anthropic_provider.cpp src/session/session.cpp src/session/database_session_store.cpp src/tool/tool_registry.cpp ) target_include_directories(smartbotic_llm PUBLIC $ $ ) target_compile_options(smartbotic_llm PRIVATE ${SMARTBOTIC_CXX_WARNINGS}) target_link_libraries(smartbotic_llm PUBLIC smartbotic::common smartbotic::proto spdlog::spdlog nlohmann_json::nlohmann_json httplib::httplib OpenSSL::SSL OpenSSL::Crypto ) add_library(smartbotic::llm ALIAS smartbotic_llm) # gRPC service library add_library(smartbotic_llm_grpc STATIC src/grpc/proto_convert.cpp src/grpc/llm_service.cpp src/grpc/session_service.cpp src/grpc/model_service.cpp src/grpc/config_service.cpp src/grpc/server.cpp ) target_include_directories(smartbotic_llm_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_llm_grpc PRIVATE ${SMARTBOTIC_GRPC_WARNINGS}) target_link_libraries(smartbotic_llm_grpc PUBLIC smartbotic::llm smartbotic::proto spdlog::spdlog ) add_library(smartbotic::llm_grpc ALIAS smartbotic_llm_grpc) # LLM service executable add_executable(smartbotic-crm-llm src/main.cpp ) target_include_directories(smartbotic-crm-llm PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_compile_options(smartbotic-crm-llm PRIVATE ${SMARTBOTIC_GRPC_WARNINGS}) target_link_libraries(smartbotic-crm-llm PRIVATE smartbotic::llm_grpc )