|
@@ -26,6 +26,15 @@ pkg_check_modules(LZ4 QUIET liblz4)
|
|
|
# no LD_PRELOAD needed.
|
|
# no LD_PRELOAD needed.
|
|
|
pkg_check_modules(JEMALLOC QUIET jemalloc)
|
|
pkg_check_modules(JEMALLOC QUIET jemalloc)
|
|
|
|
|
|
|
|
|
|
+# LMDB — v2.0 storage substrate. liblmdb does not ship a pkg-config file on
|
|
|
|
|
+# Debian 13 (`pkg-config --modversion lmdb` fails), so resolve via find_path /
|
|
|
|
|
+# find_library. Hard dependency.
|
|
|
|
|
+find_path(LMDB_INCLUDE_DIR lmdb.h)
|
|
|
|
|
+find_library(LMDB_LIBRARY NAMES lmdb)
|
|
|
|
|
+if(NOT LMDB_INCLUDE_DIR OR NOT LMDB_LIBRARY)
|
|
|
|
|
+ message(FATAL_ERROR "LMDB not found. Install liblmdb-dev.")
|
|
|
|
|
+endif()
|
|
|
|
|
+
|
|
|
# Source files
|
|
# Source files
|
|
|
set(DATABASE_SERVICE_SOURCES
|
|
set(DATABASE_SERVICE_SOURCES
|
|
|
src/main.cpp
|
|
src/main.cpp
|
|
@@ -94,6 +103,10 @@ endif()
|
|
|
target_link_libraries(smartbotic-database PRIVATE ${yyjson_LIBRARIES})
|
|
target_link_libraries(smartbotic-database PRIVATE ${yyjson_LIBRARIES})
|
|
|
target_include_directories(smartbotic-database PRIVATE ${yyjson_INCLUDE_DIRS})
|
|
target_include_directories(smartbotic-database PRIVATE ${yyjson_INCLUDE_DIRS})
|
|
|
|
|
|
|
|
|
|
+# LMDB — v2.0 storage substrate
|
|
|
|
|
+target_link_libraries(smartbotic-database PRIVATE ${LMDB_LIBRARY})
|
|
|
|
|
+target_include_directories(smartbotic-database PRIVATE ${LMDB_INCLUDE_DIR})
|
|
|
|
|
+
|
|
|
# v1.9.4 — jemalloc allocator (overrides glibc malloc/free)
|
|
# v1.9.4 — jemalloc allocator (overrides glibc malloc/free)
|
|
|
if(JEMALLOC_FOUND)
|
|
if(JEMALLOC_FOUND)
|
|
|
target_compile_definitions(smartbotic-database PRIVATE HAVE_JEMALLOC)
|
|
target_compile_definitions(smartbotic-database PRIVATE HAVE_JEMALLOC)
|