Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .github/workflows/cmake-multi-platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ jobs:
sudo apt-get update
sudo apt-get install -y clang

- name: Install Linux dependencies
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y liburing-dev

- name: Ensure CMake on macOS
if: matrix.os == 'macos-latest'
run: |
Expand Down Expand Up @@ -134,7 +140,7 @@ jobs:
- name: Install sanitizer toolchain
run: |
sudo apt-get update
sudo apt-get install -y clang
sudo apt-get install -y clang liburing-dev

- name: Configure CMake with sanitizers
run: >
Expand Down
21 changes: 18 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ find_package(Threads REQUIRED)
option(FKVS_ENABLE_WARNINGS "Enable strict compiler warnings" ON)
option(FKVS_WARNINGS_AS_ERRORS "Treat compiler warnings as errors" OFF)
option(FKVS_ENABLE_SANITIZERS "Enable AddressSanitizer and UndefinedBehaviorSanitizer" OFF)
option(FKVS_ENABLE_IO_URING "Enable io_uring server backend when liburing is available" ON)
set(FKVS_HAVE_IO_URING FALSE)

function(fkvs_configure_target target_name)
target_compile_definitions(${target_name} PRIVATE _POSIX_C_SOURCE=200809L)
Expand Down Expand Up @@ -42,13 +44,18 @@ if(APPLE)
target_compile_definitions(fkvs-benchmark PRIVATE CLI)
fkvs_configure_target(fkvs-benchmark)
elseif(LINUX)
find_library(LIBURING liburing)
if(FKVS_ENABLE_IO_URING)
find_path(LIBURING_INCLUDE_DIR NAMES liburing.h)
find_library(LIBURING_LIBRARY NAMES uring)
endif()

if(LIBURING)
if(FKVS_ENABLE_IO_URING AND LIBURING_INCLUDE_DIR AND LIBURING_LIBRARY)
add_executable(fkvs-server src/memory.c src/counter.c src/client.c src/core/list.c src/config.c src/networking/networking.c src/server.c src/server_lifecycle.c src/server_limits.c src/core/hashtable.c src/commands/common/command_registry.c src/commands/server/server_command_handlers.c src/io/event_dispatcher_io_uring.c src/ttl.c src/numeric_parse.c)
target_link_libraries(fkvs-server PRIVATE LIBURING)
target_include_directories(fkvs-server PRIVATE ${LIBURING_INCLUDE_DIR})
target_link_libraries(fkvs-server PRIVATE ${LIBURING_LIBRARY})
target_compile_definitions(fkvs-server PRIVATE SERVER IO_URING_ENABLED)
fkvs_configure_target(fkvs-server)
set(FKVS_HAVE_IO_URING TRUE)
else()
add_executable(fkvs-server src/memory.c src/counter.c src/client.c src/core/list.c src/config.c src/networking/networking.c src/server.c src/server_lifecycle.c src/server_limits.c src/core/hashtable.c src/commands/common/command_registry.c src/commands/server/server_command_handlers.c src/io/event_dispatcher_epoll.c src/ttl.c src/numeric_parse.c)
target_compile_definitions(fkvs-server PRIVATE SERVER)
Expand Down Expand Up @@ -106,6 +113,14 @@ add_test(NAME ServerLifecycleTest COMMAND test_server_lifecycle)
add_test(NAME ServerConfigTest COMMAND test_server_config)
add_test(NAME ServerLimitsTest COMMAND test_server_limits)
add_test(NAME IntegrationTest COMMAND test_integration)
if(FKVS_HAVE_IO_URING)
find_package(Python3 COMPONENTS Interpreter REQUIRED)
add_test(
NAME IoUringSmokeTest
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tests/io_uring_smoke.py $<TARGET_FILE:fkvs-server>
)
set_tests_properties(IoUringSmokeTest PROPERTIES TIMEOUT 30)
endif()
add_executable(fkvs-cli src/string_utils.c src/fkvs-cli.c src/config.c src/commands/common/command_parser.c src/commands/client/client_command_handlers.c)
target_link_libraries(fkvs-benchmark PRIVATE Threads::Threads)
target_link_libraries(fkvs-cli PUBLIC linenoise)
Expand Down
Loading
Loading