cmake_minimum_required(VERSION 2.8) project(common) include(${CMAKE_CURRENT_LIST_DIR}/cmake/Common.cmake) add_subdirectory(redis_module) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") include_directories(thirdparty/ae) # Compile flatbuffers set(COMMON_FBS_SRC "${CMAKE_CURRENT_LIST_DIR}/format/common.fbs") set(OUTPUT_DIR ${CMAKE_CURRENT_LIST_DIR}/format/) add_custom_target(gen_common_fbs ALL) add_custom_command( TARGET gen_common_fbs COMMAND ${FLATBUFFERS_COMPILER} -c -o ${OUTPUT_DIR} ${COMMON_FBS_SRC} DEPENDS ${FBS_DEPENDS} COMMENT "Running flatc compiler on ${COMMON_FBS_SRC}" VERBATIM) add_dependencies(gen_common_fbs flatbuffers_ep) add_custom_target( hiredis COMMAND make WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/thirdparty/hiredis) add_library(common STATIC event_loop.cc common.cc common_protocol.cc task.cc io.cc net.cc logging.cc state/redis.cc state/table.cc state/object_table.cc state/task_table.cc state/db_client_table.cc state/actor_notification_table.cc state/local_scheduler_table.cc thirdparty/ae/ae.c thirdparty/sha256.c) add_dependencies(common gen_common_fbs) target_link_libraries(common "${CMAKE_CURRENT_LIST_DIR}/thirdparty/hiredis/libhiredis.a") function(define_test test_name library) add_executable(${test_name} test/${test_name}.cc ${ARGN}) add_dependencies(${test_name} hiredis flatbuffers_ep) target_link_libraries(${test_name} common ${FLATBUFFERS_STATIC_LIB} ${library}) target_compile_options(${test_name} PUBLIC "-DPLASMA_TEST -DLOCAL_SCHEDULER_TEST -DCOMMON_TEST -DRAY_COMMON_LOG_LEVEL=4 -DRAY_TIMEOUT=50") endfunction() define_test(common_tests "") define_test(db_tests "") define_test(io_tests "") define_test(task_tests "") define_test(redis_tests "") define_test(task_table_tests "") define_test(object_table_tests "") add_custom_target( redis COMMAND make WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/thirdparty/redis) add_custom_target(copy_redis ALL) foreach(file "redis-cli" "redis-server") add_custom_command(TARGET copy_redis POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/thirdparty/redis/src/${file} ${CMAKE_BINARY_DIR}/src/common/thirdparty/redis/src/${file}) endforeach() add_dependencies(copy_redis redis)