|
1 | 1 | cmake_minimum_required(VERSION 3.20) |
2 | | -project(epoch_cpp VERSION 0.1.0 LANGUAGES CXX) |
| 2 | +project(epoch_cpp VERSION 0.1.0 LANGUAGES C CXX) |
3 | 3 |
|
4 | 4 | add_library(epoch_cpp src/epoch.cpp src/engine.cpp src/actor_id.cpp src/aeron_transport.cpp) |
5 | 5 |
|
6 | 6 | target_include_directories(epoch_cpp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) |
7 | 7 |
|
8 | 8 | target_compile_features(epoch_cpp PUBLIC cxx_std_17) |
9 | 9 |
|
| 10 | +find_package(Threads REQUIRED) |
| 11 | +set(AERON_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/aeron) |
| 12 | +set(AERON_CLIENT_DIR ${AERON_ROOT}/aeron-client/src/main/c) |
| 13 | +if (EXISTS ${AERON_CLIENT_DIR}/CMakeLists.txt) |
| 14 | + include(CheckIncludeFile) |
| 15 | + file(STRINGS ${AERON_ROOT}/version.txt AERON_VERSION_TXT LIMIT_COUNT 1) |
| 16 | + string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" _ ${AERON_VERSION_TXT}) |
| 17 | + set(AERON_VERSION_MAJOR ${CMAKE_MATCH_1}) |
| 18 | + set(AERON_VERSION_MINOR ${CMAKE_MATCH_2}) |
| 19 | + set(AERON_VERSION_PATCH ${CMAKE_MATCH_3}) |
| 20 | + execute_process( |
| 21 | + COMMAND git -C ${AERON_ROOT} rev-parse --short HEAD |
| 22 | + OUTPUT_VARIABLE AERON_VERSION_GITSHA |
| 23 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 24 | + ERROR_QUIET) |
| 25 | + if (AERON_VERSION_GITSHA STREQUAL "") |
| 26 | + set(AERON_VERSION_GITSHA "unknown") |
| 27 | + endif() |
| 28 | + add_definitions(-DAERON_VERSION_TXT="${AERON_VERSION_TXT}") |
| 29 | + add_definitions(-DAERON_VERSION_MAJOR=${AERON_VERSION_MAJOR}) |
| 30 | + add_definitions(-DAERON_VERSION_MINOR=${AERON_VERSION_MINOR}) |
| 31 | + add_definitions(-DAERON_VERSION_PATCH=${AERON_VERSION_PATCH}) |
| 32 | + add_definitions(-DAERON_VERSION_GITSHA="${AERON_VERSION_GITSHA}") |
| 33 | + set(AERON_INSTALL_TARGETS OFF CACHE BOOL "" FORCE) |
| 34 | + add_subdirectory(${AERON_CLIENT_DIR} ${CMAKE_CURRENT_BINARY_DIR}/aeron-client) |
| 35 | + target_link_libraries(epoch_cpp PUBLIC aeron::aeron_static) |
| 36 | +else() |
| 37 | + message(FATAL_ERROR "Aeron submodule not found. Run: git submodule update --init --recursive") |
| 38 | +endif() |
| 39 | + |
10 | 40 | enable_testing() |
11 | 41 | add_executable(epoch_cpp_test tests/epoch_vector_test.cpp) |
12 | 42 | target_link_libraries(epoch_cpp_test PRIVATE epoch_cpp) |
|
0 commit comments