blob: 6c8b3e521db174c265277f8e1424e9aeb445cee8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
set(SWARMKV_MAJOR_VERSION 4)
set(SWARMKV_MINOR_VERSION 2)
set(SWARMKV_PATCH_VERSION 0)
set(SWARMKV_VERSION ${SWARMKV_MAJOR_VERSION}.${SWARMKV_MINOR_VERSION}.${SWARMKV_PATCH_VERSION})
message(STATUS "SwarmKV, Version: ${SWARMKV_VERSION}")
# Attempt to find Git and if available, get the current Git hash
find_package(Git)
if(GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --tags --dirty --always
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else()
set(GIT_VERSION "unknown")
endif()
# Add a definition to the compiler flags
add_definitions(-DGIT_VERSION=\"${GIT_VERSION}\")
add_definitions(-D_GNU_SOURCE)
add_definitions(-fPIC)
set(SWARMKV_SRC swarmkv.c swarmkv_api.c
swarmkv_mesh.c swarmkv_rpc.c swarmkv_message.c swarmkv_net.c
swarmkv_store.c swarmkv_sync.c swarmkv_keyspace.c swarmkv_monitor.c
t_string.c t_set.c t_token_bucket.c t_hash.c t_bloom_filter.c t_cms.c
swarmkv_common.c swarmkv_utils.c future_promise.c http_client.c)
set(LIB_SOURCE_FILES
${PROJECT_SOURCE_DIR}/deps/mpack/mpack.c
${PROJECT_SOURCE_DIR}/deps/sds/sds.c
${PROJECT_SOURCE_DIR}/deps/cJSON/cJSON.c
${PROJECT_SOURCE_DIR}/deps/base64/base64.c
${PROJECT_SOURCE_DIR}/deps/xxhash/xxhash.c
${PROJECT_SOURCE_DIR}/deps/timeout/timeout.c
${PROJECT_SOURCE_DIR}/deps/log/log.c
${PROJECT_SOURCE_DIR}/deps/ringbuf/ringbuf.c)
include_directories(${PROJECT_SOURCE_DIR}/include/
${PROJECT_SOURCE_DIR}/CRDT
${PROJECT_SOURCE_DIR}/deps/base64
${PROJECT_SOURCE_DIR}/deps/mpack
${PROJECT_SOURCE_DIR}/deps/sds
${PROJECT_SOURCE_DIR}/deps/uthash
${PROJECT_SOURCE_DIR}/deps/xxhash
${PROJECT_SOURCE_DIR}/deps/timeout
${PROJECT_SOURCE_DIR}/deps/cJSON
${PROJECT_SOURCE_DIR}/deps/log
${PROJECT_SOURCE_DIR}/deps/ringbuf)
# Static Library Output
add_library(swarmkv-static STATIC ${SWARMKV_SRC} ${LIB_SOURCE_FILES})
set_target_properties(swarmkv-static PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(swarmkv-static PROPERTIES OUTPUT_NAME swarmkv)
set_target_properties(swarmkv-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set_target_properties(swarmkv-static PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/version.map")
target_include_directories(swarmkv-static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc_internal/)
target_link_libraries(swarmkv-static CRDT libevent-static libevent-static-pthreads libevent-static libhdr-static)
# Shared Library Output
add_library(swarmkv-shared SHARED ${SWARMKV_SRC} ${LIB_SOURCE_FILES} ${CRDT})
set_target_properties(swarmkv-shared PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(swarmkv-shared PROPERTIES OUTPUT_NAME swarmkv)
set_target_properties(swarmkv-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set_target_properties(swarmkv-shared PROPERTIES VERSION ${SWARMKV_MAJOR_VERSION}.${SWARMKV_MINOR_VERSION})
set_target_properties(swarmkv-shared PROPERTIES SOVERSION ${SWARMKV_MAJOR_VERSION})
set_target_properties(swarmkv-shared PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/version.map")
#target_include_directories(swarmkv-shared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc_internal/)
target_link_libraries(swarmkv-shared CRDT libevent-static libevent-static-pthreads libhdr-static ${SWARMKV_DEPEND_DYN_LIB})
set(CMAKE_INSTALL_PREFIX /opt/MESA/)
install(FILES ${PROJECT_SOURCE_DIR}/include/swarmkv/swarmkv.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include/MESA/ COMPONENT HEADER)
install(TARGETS swarmkv-shared LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/ COMPONENT library)
|