CMakeLists.txt 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. src/runner_client.cpp
  38. )
  39. target_include_directories(smartbotic_llm_grpc
  40. PUBLIC
  41. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  42. $<INSTALL_INTERFACE:include>
  43. )
  44. # Use relaxed warnings for gRPC targets (abseil uses __int128 which triggers -Wpedantic)
  45. set(SMARTBOTIC_GRPC_WARNINGS
  46. -Wall
  47. -Wextra
  48. -Werror
  49. -Wno-unused-parameter
  50. -Wno-dangling-reference
  51. -Wno-pedantic # Required for abseil __int128 support
  52. -Wno-overflow # Required for abseil hash_set.h
  53. )
  54. target_compile_options(smartbotic_llm_grpc PRIVATE ${SMARTBOTIC_GRPC_WARNINGS})
  55. target_link_libraries(smartbotic_llm_grpc
  56. PUBLIC
  57. smartbotic::llm
  58. smartbotic::proto
  59. spdlog::spdlog
  60. )
  61. add_library(smartbotic::llm_grpc ALIAS smartbotic_llm_grpc)
  62. # LLM service executable
  63. add_executable(smartbotic-crm-llm
  64. src/main.cpp
  65. )
  66. target_include_directories(smartbotic-crm-llm
  67. PRIVATE
  68. ${CMAKE_CURRENT_SOURCE_DIR}/include
  69. )
  70. target_compile_options(smartbotic-crm-llm PRIVATE ${SMARTBOTIC_GRPC_WARNINGS})
  71. target_link_libraries(smartbotic-crm-llm
  72. PRIVATE
  73. smartbotic::llm_grpc
  74. )