CMakeLists.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # LLM service - smartbotic-crm-llm binary and core libraries
  2. # Core LLM library (config, providers, sessions, tools)
  3. add_library(smartbotic_llm STATIC
  4. src/config.cpp
  5. src/provider/provider_factory.cpp
  6. src/provider/openai_provider.cpp
  7. src/provider/anthropic_provider.cpp
  8. src/session/session.cpp
  9. src/session/database_session_store.cpp
  10. src/tool/tool_registry.cpp
  11. )
  12. target_include_directories(smartbotic_llm
  13. PUBLIC
  14. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  15. $<INSTALL_INTERFACE:include>
  16. )
  17. target_compile_options(smartbotic_llm PRIVATE ${SMARTBOTIC_CXX_WARNINGS})
  18. target_link_libraries(smartbotic_llm
  19. PUBLIC
  20. smartbotic::common
  21. smartbotic::proto
  22. spdlog::spdlog
  23. nlohmann_json::nlohmann_json
  24. httplib::httplib
  25. OpenSSL::SSL
  26. OpenSSL::Crypto
  27. )
  28. add_library(smartbotic::llm ALIAS smartbotic_llm)
  29. # gRPC service library
  30. add_library(smartbotic_llm_grpc STATIC
  31. src/grpc/proto_convert.cpp
  32. src/grpc/llm_service.cpp
  33. src/grpc/session_service.cpp
  34. src/grpc/model_service.cpp
  35. src/grpc/config_service.cpp
  36. src/grpc/server.cpp
  37. )
  38. target_include_directories(smartbotic_llm_grpc
  39. PUBLIC
  40. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  41. $<INSTALL_INTERFACE:include>
  42. )
  43. # Use relaxed warnings for gRPC targets (abseil uses __int128 which triggers -Wpedantic)
  44. set(SMARTBOTIC_GRPC_WARNINGS
  45. -Wall
  46. -Wextra
  47. -Werror
  48. -Wno-unused-parameter
  49. -Wno-dangling-reference
  50. -Wno-pedantic # Required for abseil __int128 support
  51. -Wno-overflow # Required for abseil hash_set.h
  52. )
  53. target_compile_options(smartbotic_llm_grpc PRIVATE ${SMARTBOTIC_GRPC_WARNINGS})
  54. target_link_libraries(smartbotic_llm_grpc
  55. PUBLIC
  56. smartbotic::llm
  57. smartbotic::proto
  58. spdlog::spdlog
  59. )
  60. add_library(smartbotic::llm_grpc ALIAS smartbotic_llm_grpc)
  61. # LLM service executable
  62. add_executable(smartbotic-crm-llm
  63. src/main.cpp
  64. )
  65. target_include_directories(smartbotic-crm-llm
  66. PRIVATE
  67. ${CMAKE_CURRENT_SOURCE_DIR}/include
  68. )
  69. target_compile_options(smartbotic-crm-llm PRIVATE ${SMARTBOTIC_GRPC_WARNINGS})
  70. target_link_libraries(smartbotic-crm-llm
  71. PRIVATE
  72. smartbotic::llm_grpc
  73. )