CMakeLists.txt 2.1 KB

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