CMakeLists.txt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # Database service - smartbotic-crm-database binary and storage library
  2. # Storage engine library
  3. add_library(smartbotic_database STATIC
  4. src/document.cpp
  5. src/collection.cpp
  6. src/collection_meta.cpp
  7. src/snapshot.cpp
  8. src/database.cpp
  9. src/config.cpp
  10. )
  11. target_include_directories(smartbotic_database
  12. PUBLIC
  13. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  14. $<INSTALL_INTERFACE:include>
  15. )
  16. target_compile_options(smartbotic_database PRIVATE ${SMARTBOTIC_CXX_WARNINGS})
  17. target_link_libraries(smartbotic_database
  18. PUBLIC
  19. smartbotic::common
  20. spdlog::spdlog
  21. nlohmann_json::nlohmann_json
  22. )
  23. add_library(smartbotic::database ALIAS smartbotic_database)
  24. # gRPC service library
  25. add_library(smartbotic_database_grpc STATIC
  26. src/grpc/proto_convert.cpp
  27. src/grpc/document_service.cpp
  28. src/grpc/collection_service.cpp
  29. src/grpc/query_service.cpp
  30. src/grpc/admin_service.cpp
  31. src/grpc/subscription_service.cpp
  32. src/grpc/server.cpp
  33. )
  34. target_include_directories(smartbotic_database_grpc
  35. PUBLIC
  36. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  37. $<INSTALL_INTERFACE:include>
  38. )
  39. # Use relaxed warnings for gRPC targets (abseil uses __int128 which triggers -Wpedantic)
  40. set(SMARTBOTIC_GRPC_WARNINGS
  41. -Wall
  42. -Wextra
  43. -Werror
  44. -Wno-unused-parameter
  45. -Wno-dangling-reference
  46. -Wno-pedantic # Required for abseil __int128 support
  47. -Wno-overflow # Required for abseil hash_set.h
  48. )
  49. target_compile_options(smartbotic_database_grpc PRIVATE ${SMARTBOTIC_GRPC_WARNINGS})
  50. target_link_libraries(smartbotic_database_grpc
  51. PUBLIC
  52. smartbotic::database
  53. smartbotic::proto
  54. spdlog::spdlog
  55. )
  56. add_library(smartbotic::database_grpc ALIAS smartbotic_database_grpc)
  57. # Database service executable
  58. add_executable(smartbotic-crm-database
  59. src/main.cpp
  60. )
  61. target_include_directories(smartbotic-crm-database
  62. PRIVATE
  63. ${CMAKE_CURRENT_SOURCE_DIR}/include
  64. )
  65. target_compile_options(smartbotic-crm-database PRIVATE ${SMARTBOTIC_GRPC_WARNINGS})
  66. target_link_libraries(smartbotic-crm-database
  67. PRIVATE
  68. smartbotic::database_grpc
  69. sodium
  70. )