Skip to content

Commit

Permalink
CMake support
Browse files Browse the repository at this point in the history
- Build tests
- Added build script (run: build.sh --help)

Signed-off-by: Eran Ifrah <[email protected]>
  • Loading branch information
eifrah-aws committed Feb 13, 2025
1 parent bf9656d commit f8389e2
Show file tree
Hide file tree
Showing 19 changed files with 671 additions and 56 deletions.
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
cmake_minimum_required(VERSION 3.24)
project(VSS)

# Options
option(BUILD_TESTS "Build valkey-search tests" ON)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")

set(CMAKE_CXX_STANDARD 20 REQUIRED)
Expand All @@ -21,6 +24,11 @@ add_subdirectory(vmsdk)
add_subdirectory(third_party)
add_subdirectory(src)

if(BUILD_TESTS)
message(STATUS "Building tests")
add_subdirectory(testing)
endif()

# Create a symbolic link to the root directory for compile_commands.json
execute_process(
COMMAND
Expand Down
87 changes: 87 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/bin/bash -e

BUILD_CONFIG=debug
RUN_CMAKE="no"
ROOT_DIR=$(readlink -f $(dirname $0))
VERBOSE_ARGS=""
CMAKE_TARGET=""

echo "Root directory: ${ROOT_DIR}"

function print_usage() {
cat<<EOF
Usage: build.sh [options...]
--help | -h Print this help message and exit
--cmake Run cmake stage
--verbose | -v Run verbose build
--release Build for release
--clean Clean the current build configuration (debug or release)
Example usage:
# run CMake for debug build & build
build.sh --configure
# run CMake for release build & build
build.sh --release --configure
EOF
}

function configure() {
mkdir -p ${ROOT_DIR}/build-${BUILD_CONFIG}
cd $_
local BUILD_TYPE=$(echo ${BUILD_CONFIG^})
cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILD_TESTS=ON
cd ${ROOT_DIR}
}

function build() {
# If the build folder does not exist, run cmake
if [ ! -d "${ROOT_DIR}/build-${BUILD_CONFIG}" ]; then
configure
fi
cd ${ROOT_DIR}/build-${BUILD_CONFIG}
make -j$(nproc) ${VERBOSE_ARGS} ${CMAKE_TARGET}
cd ${ROOT_DIR}
}

## Parse command line arguments
while [ $# -gt 0 ]
do
arg=$1
case $arg in
--clean)
shift || true
CMAKE_TARGET="clean"
echo "Will run 'make clean'"
;;
--release)
shift || true
BUILD_CONFIG="release"
echo "Building in Release mode"
;;
--cmake)
shift || true
RUN_CMAKE="yes"
echo "Running cmake: true"
;;
--verbose|-v)
shift || true
VERBOSE_ARGS="VERBOSE=1"
echo "Verbose build: true"
;;
--help|-h)
print_usage
exit 0
;;
*)
print_usage
exit 1
;;
esac
done

if [[ "${RUN_CMAKE}" == "yes" ]]; then
configure
fi
build
14 changes: 14 additions & 0 deletions cmake/Modules/linux_utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,20 @@ foreach(LIBNAME ${UTF8_LIBS_NAMES})
unset(__LIB CACHE)
endforeach()

set(GTEST_LIBS_NAME gtest gtest_main gmock)
message(STATUS "Collecting GTest libs")
set(GTEST_LIBS "")
foreach(LIBNAME ${GTEST_LIBS_NAME})
find_library(
__LIB ${LIBNAME} REQUIRED
PATHS ${MODULES_LIB_DIR}
NO_DEFAULT_PATH)
list(APPEND GTEST_LIBS ${__LIB})
message(STATUS " Found library ${__LIB}")
unset(__LIB CACHE)
endforeach()


find_library(
LIBZ z REQUIRED
PATHS ${MODULES_LIB_DIR}
Expand Down
1 change: 0 additions & 1 deletion cmake/Modules/valkey_search.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ endif()
# A wrapper around "add_library" (STATIC) that enables the
# INTERPROCEDURAL_OPTIMIZATION property for release builds ("lto")
function(valkey_search_add_static_library name sources)
message(STATUS "Adding static library ${name}")
add_library(${name} STATIC ${sources})
if(VALKEY_SEARCH_RELEASE_BUILD)
set_property(TARGET ${name} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
Expand Down
14 changes: 7 additions & 7 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ endif()
set(SRCS_VALKEY_SEARCH ${CMAKE_CURRENT_LIST_DIR}/valkey_search.cc
${CMAKE_CURRENT_LIST_DIR}/valkey_search.h)

valkey_search_add_static_library(valkey_search ${SRCS_VALKEY_SEARCH})
valkey_search_add_static_library(valkey_search "${SRCS_VALKEY_SEARCH}")
target_include_directories(valkey_search PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(valkey_search PUBLIC attribute_data_type)
target_link_libraries(valkey_search PUBLIC index_schema)
Expand Down Expand Up @@ -63,7 +63,7 @@ set(SRCS_KEYSPACE_EVENT_MANAGER
${CMAKE_CURRENT_LIST_DIR}/keyspace_event_manager.h)

valkey_search_add_static_library(keyspace_event_manager
${SRCS_KEYSPACE_EVENT_MANAGER})
"${SRCS_KEYSPACE_EVENT_MANAGER}")
target_include_directories(keyspace_event_manager
PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(keyspace_event_manager PUBLIC attribute_data_type)
Expand Down Expand Up @@ -92,7 +92,7 @@ target_link_libraries(metrics INTERFACE latency_sampler)
set(SRCS_INDEX_SCHEMA ${CMAKE_CURRENT_LIST_DIR}/index_schema.cc
${CMAKE_CURRENT_LIST_DIR}/index_schema.h)

valkey_search_add_static_library(index_schema ${SRCS_INDEX_SCHEMA})
valkey_search_add_static_library(index_schema "${SRCS_INDEX_SCHEMA}")
target_include_directories(index_schema PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(index_schema PUBLIC attribute)
target_link_libraries(index_schema PUBLIC attribute_data_type)
Expand Down Expand Up @@ -122,7 +122,7 @@ set(SRCS_ATTRIBUTE_DATA_TYPE ${CMAKE_CURRENT_LIST_DIR}/attribute_data_type.cc
${CMAKE_CURRENT_LIST_DIR}/attribute_data_type.h)

valkey_search_add_static_library(attribute_data_type
${SRCS_ATTRIBUTE_DATA_TYPE})
"${SRCS_ATTRIBUTE_DATA_TYPE}")
target_include_directories(attribute_data_type PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(attribute_data_type PUBLIC index_schema_cc_proto)
target_link_libraries(attribute_data_type PUBLIC managed_pointers)
Expand All @@ -141,7 +141,7 @@ target_link_libraries(rdb_io_stream INTERFACE valkey_module)
set(SRCS_SCHEMA_MANAGER ${CMAKE_CURRENT_LIST_DIR}/schema_manager.cc
${CMAKE_CURRENT_LIST_DIR}/schema_manager.h)

valkey_search_add_static_library(schema_manager ${SRCS_SCHEMA_MANAGER})
valkey_search_add_static_library(schema_manager "${SRCS_SCHEMA_MANAGER}")
target_include_directories(schema_manager PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(schema_manager PUBLIC index_schema)
target_link_libraries(schema_manager PUBLIC index_schema_cc_proto)
Expand All @@ -160,7 +160,7 @@ target_link_libraries(schema_manager PUBLIC valkey_module)
set(SRCS_SERVER_EVENTS ${CMAKE_CURRENT_LIST_DIR}/server_events.cc
${CMAKE_CURRENT_LIST_DIR}/server_events.h)

valkey_search_add_static_library(server_events ${SRCS_SERVER_EVENTS})
valkey_search_add_static_library(server_events "${SRCS_SERVER_EVENTS}")
target_include_directories(server_events PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(server_events PUBLIC schema_manager)
target_link_libraries(server_events PUBLIC valkey_search)
Expand All @@ -171,7 +171,7 @@ set(SRCS_VECTOR_EXTERNALIZER ${CMAKE_CURRENT_LIST_DIR}/vector_externalizer.cc
${CMAKE_CURRENT_LIST_DIR}/vector_externalizer.h)

valkey_search_add_static_library(vector_externalizer
${SRCS_VECTOR_EXTERNALIZER})
"${SRCS_VECTOR_EXTERNALIZER}")
target_include_directories(vector_externalizer PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(vector_externalizer PUBLIC attribute_data_type)
target_link_libraries(vector_externalizer PUBLIC index_schema_cc_proto)
Expand Down
8 changes: 4 additions & 4 deletions src/commands/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set(SRCS_COMMANDS
${CMAKE_CURRENT_LIST_DIR}/ft_search.cc ${CMAKE_CURRENT_LIST_DIR}/commands.h
${CMAKE_CURRENT_LIST_DIR}/ft_search.h)

valkey_search_add_static_library(commands ${SRCS_COMMANDS})
valkey_search_add_static_library(commands "${SRCS_COMMANDS}")
target_include_directories(commands PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(commands PUBLIC ft_create_parser)
target_link_libraries(commands PUBLIC ft_search_parser)
Expand All @@ -28,7 +28,7 @@ target_link_libraries(commands PUBLIC valkey_module)
set(SRCS_FT_SEARCH_PARSER ${CMAKE_CURRENT_LIST_DIR}/ft_search_parser.cc
${CMAKE_CURRENT_LIST_DIR}/ft_search_parser.h)

valkey_search_add_static_library(ft_search_parser ${SRCS_FT_SEARCH_PARSER})
valkey_search_add_static_library(ft_search_parser "${SRCS_FT_SEARCH_PARSER}")
target_include_directories(ft_search_parser PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(ft_search_parser PUBLIC filter_parser)
target_link_libraries(ft_search_parser PUBLIC index_schema)
Expand All @@ -45,7 +45,7 @@ target_link_libraries(ft_search_parser PUBLIC valkey_module)
set(SRCS_FT_CREATE_PARSER ${CMAKE_CURRENT_LIST_DIR}/ft_create_parser.cc
${CMAKE_CURRENT_LIST_DIR}/ft_create_parser.h)

valkey_search_add_static_library(ft_create_parser ${SRCS_FT_CREATE_PARSER})
valkey_search_add_static_library(ft_create_parser "${SRCS_FT_CREATE_PARSER}")
target_include_directories(ft_create_parser PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(ft_create_parser PUBLIC attribute_data_type)
target_link_libraries(ft_create_parser PUBLIC index_schema_cc_proto)
Expand All @@ -59,7 +59,7 @@ target_link_libraries(ft_create_parser PUBLIC valkey_module)
set(SRCS_FILTER_PARSER ${CMAKE_CURRENT_LIST_DIR}/filter_parser.cc
${CMAKE_CURRENT_LIST_DIR}/filter_parser.h)

valkey_search_add_static_library(filter_parser ${SRCS_FILTER_PARSER})
valkey_search_add_static_library(filter_parser "${SRCS_FILTER_PARSER}")
target_include_directories(filter_parser PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(filter_parser PUBLIC index_schema)
target_link_libraries(filter_parser PUBLIC index_base)
Expand Down
10 changes: 5 additions & 5 deletions src/coordinator/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ target_link_libraries(coordinator_grpc_proto coordinator_cc_proto)
set(SRCS_SERVER ${CMAKE_CURRENT_LIST_DIR}/server.cc
${CMAKE_CURRENT_LIST_DIR}/server.h)

valkey_search_add_static_library(server ${SRCS_SERVER})
valkey_search_add_static_library(server "${SRCS_SERVER}")
target_include_directories(server PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_include_directories(server PRIVATE ${CMAKE_BINARY_DIR})
target_link_libraries(server PUBLIC coordinator_cc_proto)
Expand Down Expand Up @@ -48,7 +48,7 @@ endif()
set(SRCS_CLIENT ${CMAKE_CURRENT_LIST_DIR}/client.cc
${CMAKE_CURRENT_LIST_DIR}/client.h)

valkey_search_add_static_library(client ${SRCS_CLIENT})
valkey_search_add_static_library(client "${SRCS_CLIENT}")
target_include_directories(client PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_include_directories(client PRIVATE ${CMAKE_BINARY_DIR})
target_link_libraries(client PUBLIC coordinator_cc_proto)
Expand Down Expand Up @@ -78,7 +78,7 @@ target_include_directories(util INTERFACE ${CMAKE_CURRENT_LIST_DIR})
set(SRCS_METADATA_MANAGER ${CMAKE_CURRENT_LIST_DIR}/metadata_manager.cc
${CMAKE_CURRENT_LIST_DIR}/metadata_manager.h)

valkey_search_add_static_library(metadata_manager ${SRCS_METADATA_MANAGER})
valkey_search_add_static_library(metadata_manager "${SRCS_METADATA_MANAGER}")
target_include_directories(metadata_manager PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(metadata_manager PUBLIC client_pool)
target_link_libraries(metadata_manager PUBLIC coordinator_cc_proto)
Expand All @@ -95,7 +95,7 @@ target_link_libraries(metadata_manager PUBLIC highwayhash)
set(SRCS_SEARCH_CONVERTER ${CMAKE_CURRENT_LIST_DIR}/search_converter.cc
${CMAKE_CURRENT_LIST_DIR}/search_converter.h)

valkey_search_add_static_library(search_converter ${SRCS_SEARCH_CONVERTER})
valkey_search_add_static_library(search_converter "${SRCS_SEARCH_CONVERTER}")
target_include_directories(search_converter PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(search_converter PUBLIC coordinator_cc_proto)
target_link_libraries(search_converter PUBLIC index_schema)
Expand All @@ -112,7 +112,7 @@ target_link_libraries(search_converter PUBLIC status_macros)
set(SRCS_GRPC_SUSPENDER ${CMAKE_CURRENT_LIST_DIR}/grpc_suspender.cc
${CMAKE_CURRENT_LIST_DIR}/grpc_suspender.h)

valkey_search_add_static_library(grpc_suspender ${SRCS_GRPC_SUSPENDER})
valkey_search_add_static_library(grpc_suspender "${SRCS_GRPC_SUSPENDER}")
target_include_directories(grpc_suspender PUBLIC ${CMAKE_CURRENT_LIST_DIR})
if(APPLE)
target_link_libraries(grpc_suspender PUBLIC absl::base)
Expand Down
12 changes: 5 additions & 7 deletions src/indexes/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ target_link_libraries(index_base INTERFACE valkey_module)
set(SRCS_VECTOR_BASE ${CMAKE_CURRENT_LIST_DIR}/vector_base.cc
${CMAKE_CURRENT_LIST_DIR}/vector_base.h)

valkey_search_add_static_library(
vector_base ${SRCS_VECTOR_BASE} ${INDEX_SCHEMA_PROTO_HDRS}
${INDEX_SCHEMA_PROTO_SRCS})
valkey_search_add_static_library(vector_base "${SRCS_VECTOR_BASE}")
target_include_directories(vector_base PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(vector_base PUBLIC index_base)
target_link_libraries(vector_base PUBLIC numeric)
Expand All @@ -39,7 +37,7 @@ target_link_libraries(vector_base PUBLIC valkey_module)
set(SRCS_VECTOR_HNSW ${CMAKE_CURRENT_LIST_DIR}/vector_hnsw.cc
${CMAKE_CURRENT_LIST_DIR}/vector_hnsw.h)

valkey_search_add_static_library(vector_hnsw ${SRCS_VECTOR_HNSW})
valkey_search_add_static_library(vector_hnsw "${SRCS_VECTOR_HNSW}")
target_include_directories(vector_hnsw PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(vector_hnsw PUBLIC index_base)
target_link_libraries(vector_hnsw PUBLIC vector_base)
Expand All @@ -57,7 +55,7 @@ target_link_libraries(vector_hnsw PUBLIC valkey_module)
set(SRCS_NUMERIC ${CMAKE_CURRENT_LIST_DIR}/numeric.cc
${CMAKE_CURRENT_LIST_DIR}/numeric.h)

valkey_search_add_static_library(numeric ${SRCS_NUMERIC})
valkey_search_add_static_library(numeric "${SRCS_NUMERIC}")
target_include_directories(numeric PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(numeric PUBLIC index_base)
target_link_libraries(numeric PUBLIC rdb_io_stream)
Expand All @@ -68,7 +66,7 @@ target_link_libraries(numeric PUBLIC valkey_module)

set(SRCS_TAG ${CMAKE_CURRENT_LIST_DIR}/tag.cc ${CMAKE_CURRENT_LIST_DIR}/tag.h)

valkey_search_add_static_library(tag ${SRCS_TAG})
valkey_search_add_static_library(tag "${SRCS_TAG}")
target_include_directories(tag PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(tag PUBLIC index_base)
target_link_libraries(tag PUBLIC rdb_io_stream)
Expand All @@ -83,7 +81,7 @@ target_link_libraries(tag PUBLIC ${INDEX_SCHEMA_PROTO_LIB})
set(SRCS_VECTOR_FLAT ${CMAKE_CURRENT_LIST_DIR}/vector_flat.cc
${CMAKE_CURRENT_LIST_DIR}/vector_flat.h)

valkey_search_add_static_library(vector_flat ${SRCS_VECTOR_FLAT})
valkey_search_add_static_library(vector_flat "${SRCS_VECTOR_FLAT}")
target_include_directories(vector_flat PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(vector_flat PUBLIC index_base)
target_link_libraries(vector_flat PUBLIC vector_base)
Expand Down
11 changes: 6 additions & 5 deletions src/query/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
set(SRCS_PREDICATE ${CMAKE_CURRENT_LIST_DIR}/predicate.cc
${CMAKE_CURRENT_LIST_DIR}/predicate.h)

valkey_search_add_static_library(predicate ${SRCS_PREDICATE})
valkey_search_add_static_library(predicate "${SRCS_PREDICATE}")
target_include_directories(predicate PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(predicate PUBLIC numeric)
target_link_libraries(predicate PUBLIC tag)
Expand All @@ -19,7 +19,7 @@ target_link_libraries(predicate_header INTERFACE type_conversions)
set(SRCS_SEARCH ${CMAKE_CURRENT_LIST_DIR}/search.cc
${CMAKE_CURRENT_LIST_DIR}/search.h)

valkey_search_add_static_library(search ${SRCS_SEARCH})
valkey_search_add_static_library(search "${SRCS_SEARCH}")
target_include_directories(search PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(search PUBLIC planner)
target_link_libraries(search PUBLIC predicate)
Expand Down Expand Up @@ -59,7 +59,7 @@ target_link_libraries(search_header INTERFACE thread_pool)
set(SRCS_FANOUT ${CMAKE_CURRENT_LIST_DIR}/fanout.cc
${CMAKE_CURRENT_LIST_DIR}/fanout.h)

valkey_search_add_static_library(fanout ${SRCS_FANOUT})
valkey_search_add_static_library(fanout "${SRCS_FANOUT}")
target_include_directories(fanout PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(fanout PUBLIC search)
target_link_libraries(fanout PUBLIC attribute_data_type)
Expand All @@ -80,7 +80,8 @@ target_link_libraries(fanout PUBLIC valkey_module)
set(SRCS_RESPONSE_GENERATOR ${CMAKE_CURRENT_LIST_DIR}/response_generator.cc
${CMAKE_CURRENT_LIST_DIR}/response_generator.h)

valkey_search_add_static_library(response_generator ${SRCS_RESPONSE_GENERATOR})
valkey_search_add_static_library(response_generator
"${SRCS_RESPONSE_GENERATOR}")
target_include_directories(response_generator PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(response_generator PUBLIC predicate_header)
target_link_libraries(response_generator PUBLIC search_header)
Expand All @@ -96,7 +97,7 @@ target_link_libraries(response_generator PUBLIC valkey_module)
set(SRCS_PLANNER ${CMAKE_CURRENT_LIST_DIR}/planner.cc
${CMAKE_CURRENT_LIST_DIR}/planner.h)

valkey_search_add_static_library(planner ${SRCS_PLANNER})
valkey_search_add_static_library(planner "${SRCS_PLANNER}")
target_include_directories(planner PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(planner PUBLIC index_base)
target_link_libraries(planner PUBLIC vector_base)
4 changes: 2 additions & 2 deletions src/utils/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ target_include_directories(segment_tree INTERFACE ${CMAKE_CURRENT_LIST_DIR})
set(SRCS_STRING_INTERNING ${CMAKE_CURRENT_LIST_DIR}/string_interning.cc
${CMAKE_CURRENT_LIST_DIR}/string_interning.h)

valkey_search_add_static_library(string_interning ${SRCS_STRING_INTERNING})
valkey_search_add_static_library(string_interning "${SRCS_STRING_INTERNING}")
target_include_directories(string_interning PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(string_interning PUBLIC allocator)

set(SRCS_ALLOCATOR ${CMAKE_CURRENT_LIST_DIR}/allocator.cc
${CMAKE_CURRENT_LIST_DIR}/allocator.h)

valkey_search_add_static_library(allocator ${SRCS_ALLOCATOR})
valkey_search_add_static_library(allocator "${SRCS_ALLOCATOR}")
target_include_directories(allocator PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(allocator PUBLIC intrusive_list)
target_link_libraries(allocator PUBLIC intrusive_ref_count)
Expand Down
Loading

0 comments on commit f8389e2

Please sign in to comment.