CMakeLists.txt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # Database service - smartbotic-db 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. yaml-cpp::yaml-cpp
  23. )
  24. add_library(smartbotic::database ALIAS smartbotic_database)
  25. # gRPC service library
  26. add_library(smartbotic_database_grpc STATIC
  27. src/grpc/proto_convert.cpp
  28. src/grpc/document_service.cpp
  29. src/grpc/collection_service.cpp
  30. src/grpc/query_service.cpp
  31. src/grpc/admin_service.cpp
  32. src/grpc/subscription_service.cpp
  33. src/grpc/server.cpp
  34. )
  35. target_include_directories(smartbotic_database_grpc
  36. PUBLIC
  37. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  38. $<INSTALL_INTERFACE:include>
  39. )
  40. # Use relaxed warnings for gRPC targets (abseil uses __int128 which triggers -Wpedantic)
  41. set(SMARTBOTIC_GRPC_WARNINGS
  42. -Wall
  43. -Wextra
  44. -Werror
  45. -Wno-unused-parameter
  46. -Wno-dangling-reference
  47. -Wno-pedantic # Required for abseil __int128 support
  48. -Wno-overflow # Required for abseil hash_set.h
  49. )
  50. target_compile_options(smartbotic_database_grpc PRIVATE ${SMARTBOTIC_GRPC_WARNINGS})
  51. target_link_libraries(smartbotic_database_grpc
  52. PUBLIC
  53. smartbotic::database
  54. smartbotic::proto
  55. spdlog::spdlog
  56. )
  57. add_library(smartbotic::database_grpc ALIAS smartbotic_database_grpc)
  58. # Database service executable
  59. add_executable(smartbotic-db
  60. src/main.cpp
  61. )
  62. target_include_directories(smartbotic-db
  63. PRIVATE
  64. ${CMAKE_CURRENT_SOURCE_DIR}/include
  65. )
  66. target_compile_options(smartbotic-db PRIVATE ${SMARTBOTIC_GRPC_WARNINGS})
  67. target_link_libraries(smartbotic-db
  68. PRIVATE
  69. smartbotic::database_grpc
  70. sodium
  71. )