CMakeLists.txt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # Smartbotic Database Service
  2. # Find OpenSSL for encryption
  3. find_package(OpenSSL REQUIRED)
  4. # Find optional LZ4 for compression
  5. find_package(PkgConfig)
  6. if(PKG_CONFIG_FOUND)
  7. pkg_check_modules(LZ4 QUIET liblz4)
  8. endif()
  9. # Source files
  10. set(DATABASE_SERVICE_SOURCES
  11. src/main.cpp
  12. src/database_service.cpp
  13. src/database_grpc_impl.cpp
  14. src/memory_store.cpp
  15. src/persistence/persistence_manager.cpp
  16. src/persistence/wal.cpp
  17. src/persistence/snapshot.cpp
  18. src/persistence/history_store.cpp
  19. src/encryption/encryption_manager.cpp
  20. src/events/event_manager.cpp
  21. src/files/file_manager.cpp
  22. src/files/file_store.cpp
  23. src/replication/replication_manager.cpp
  24. src/replication/sync_protocol.cpp
  25. src/replication/conflict_resolver.cpp
  26. src/migrations/migration_runner.cpp
  27. src/views/projection.cpp
  28. src/views/view_manager.cpp
  29. src/config/collection_config_manager.cpp
  30. src/config/config_loader.cpp
  31. )
  32. # Create executable
  33. add_executable(smartbotic-database ${DATABASE_SERVICE_SOURCES})
  34. target_include_directories(smartbotic-database PRIVATE
  35. ${CMAKE_CURRENT_SOURCE_DIR}/src
  36. )
  37. # Link dependencies
  38. if(BUILD_SHARED_LIBS)
  39. target_link_libraries(smartbotic-database PRIVATE smartbotic-db-client)
  40. else()
  41. target_link_libraries(smartbotic-database PRIVATE smartbotic_db_proto)
  42. endif()
  43. target_link_libraries(smartbotic-database PRIVATE
  44. OpenSSL::SSL
  45. OpenSSL::Crypto
  46. )
  47. if(TARGET nlohmann_json::nlohmann_json)
  48. target_link_libraries(smartbotic-database PRIVATE nlohmann_json::nlohmann_json)
  49. else()
  50. target_include_directories(smartbotic-database PRIVATE ${NLOHMANN_JSON_INCLUDE_DIRS})
  51. endif()
  52. if(TARGET spdlog::spdlog)
  53. target_link_libraries(smartbotic-database PRIVATE spdlog::spdlog)
  54. else()
  55. target_link_libraries(smartbotic-database PRIVATE ${SPDLOG_LIBRARIES})
  56. target_include_directories(smartbotic-database PRIVATE ${SPDLOG_INCLUDE_DIRS})
  57. endif()
  58. # LZ4 compression support
  59. if(LZ4_FOUND)
  60. target_compile_definitions(smartbotic-database PRIVATE HAVE_LZ4)
  61. target_link_libraries(smartbotic-database PRIVATE ${LZ4_LIBRARIES})
  62. target_include_directories(smartbotic-database PRIVATE ${LZ4_INCLUDE_DIRS})
  63. endif()
  64. # Systemd support
  65. if(SYSTEMD_FOUND)
  66. target_compile_definitions(smartbotic-database PRIVATE HAVE_SYSTEMD)
  67. target_link_libraries(smartbotic-database PRIVATE ${SYSTEMD_LIBRARIES})
  68. target_include_directories(smartbotic-database PRIVATE ${SYSTEMD_INCLUDE_DIRS})
  69. endif()
  70. # Installation
  71. install(TARGETS smartbotic-database
  72. RUNTIME DESTINATION bin
  73. )