@@ -23,6 +23,7 @@ OPTION(DISABLE_TESTS "If tests should be compiled or not" OFF)
2323OPTION (ENABLE_EXAMPLES "Enable building valkey examples" OFF )
2424option (ENABLE_IPV6_TESTS "Enable IPv6 tests requiring special prerequisites" OFF )
2525OPTION (ENABLE_NUGET "Install NuGET packaging details" OFF )
26+ OPTION (ENABLE_RDMA "Build valkey_rdma for RDMA support" OFF )
2627
2728# valkey requires C99
2829SET (CMAKE_C_STANDARD 99)
@@ -227,6 +228,53 @@ IF(ENABLE_SSL)
227228 DESTINATION ${CMAKE_CONF_INSTALL_DIR} )
228229ENDIF ()
229230
231+ IF (ENABLE_RDMA)
232+ find_library (RDMACM_LIBRARIES rdmacm)
233+ find_library (IBVERBS_LIBRARIES ibverbs)
234+ SET (valkey_rdma_sources src/rdma.c)
235+ ADD_LIBRARY (valkey_rdma ${valkey_rdma_sources} )
236+ ADD_LIBRARY (valkey::valkey_rdma ALIAS valkey_rdma)
237+
238+ TARGET_LINK_LIBRARIES (valkey_rdma LINK_PRIVATE ${RDMACM_LIBRARIES} ${IBVERBS_LIBRARIES} )
239+ TARGET_INCLUDE_DIRECTORIES (valkey_rdma
240+ PRIVATE
241+ $<INSTALL_INTERFACE:include >
242+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include /valkey>
243+ )
244+
245+ SET_TARGET_PROPERTIES (valkey_rdma
246+ PROPERTIES
247+ WINDOWS_EXPORT_ALL_SYMBOLS TRUE
248+ VERSION "${LIBVALKEY_SONAME} " )
249+ CONFIGURE_FILE (valkey_rdma.pc.in valkey_rdma.pc @ONLY)
250+
251+ INSTALL (TARGETS valkey_rdma
252+ EXPORT valkey_rdma-targets
253+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
254+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
255+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
256+
257+ INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR} /valkey_rdma.pc
258+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
259+
260+ export (EXPORT valkey_rdma-targets
261+ FILE "${CMAKE_CURRENT_BINARY_DIR} /valkey_rdma-targets.cmake"
262+ NAMESPACE valkey::)
263+
264+ SET (CMAKE_CONF_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} /cmake/valkey_rdma)
265+ configure_package_config_file(valkey_rdma-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR} /valkey_rdma-config.cmake
266+ INSTALL_DESTINATION ${CMAKE_CONF_INSTALL_DIR}
267+ PATH_VARS INCLUDE_INSTALL_DIR)
268+
269+ INSTALL (EXPORT valkey_rdma-targets
270+ FILE valkey_rdma-targets.cmake
271+ NAMESPACE valkey::
272+ DESTINATION ${CMAKE_CONF_INSTALL_DIR} )
273+
274+ INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR} /valkey_rdma-config.cmake
275+ DESTINATION ${CMAKE_CONF_INSTALL_DIR} )
276+ ENDIF ()
277+
230278# Add tests
231279if (NOT DISABLE_TESTS)
232280 # Make sure ctest prints the output when a test fails.
0 commit comments