-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
120 lines (107 loc) · 4.09 KB
/
CMakeLists.txt
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
cmake_minimum_required(VERSION 3.14)
include(ExternalProject)
include(cmake/misc.cmake)
project(chakra)
add_compile_options(-g -std=c++17)
add_compile_options(-DNDEBUG)
set_property(DIRECTORY PROPERTY EP_BASE ${CMAKE_CURRENT_BINARY_DIR}/depends)
add_subdirectory(${CMAKE_SOURCE_DIR}/3rdparty EXCLUDE_FROM_ALL)
file(GLOB_RECURSE CLIENT_SRC ${CMAKE_SOURCE_DIR}/src/client/*.cpp)
file(GLOB_RECURSE CLUSTER_SRC ${CMAKE_SOURCE_DIR}/src/cluster/*.cpp)
file(GLOB_RECURSE CMDS_SRC ${CMAKE_SOURCE_DIR}/src/cmds/*.cpp)
file(GLOB_RECURSE DATABASE_SRC ${CMAKE_SOURCE_DIR}/src/database/*.cpp)
file(GLOB_RECURSE NET_SRC ${CMAKE_SOURCE_DIR}/src/net/*.cpp)
file(GLOB_RECURSE UTILS_SRC ${CMAKE_SOURCE_DIR}/src/utils/*.cpp)
file(GLOB_RECURSE SERVICE_SRC ${CMAKE_SOURCE_DIR}/src/service/*.cpp)
file(GLOB_RECURSE REPLICA_SRC ${CMAKE_SOURCE_DIR}/src/replica/*.cpp)
file(GLOB_RECURSE ERROR_SRC ${CMAKE_SOURCE_DIR}/src/error/*.cpp)
file(GLOB_RECURSE CLI_SRC ${CMAKE_SOURCE_DIR}/src/cli/interface/*.cpp)
file(GLOB_RECURSE TEST_SRC ${CMAKE_SOURCE_DIR}/src/unittest/*.cpp)
file(GLOB_RECURSE BM_SRC ${CMAKE_SOURCE_DIR}/src/benchmark/*.cpp)
set(LIBS libev.a libinterface.a libprotobuf.a libgtest.a librocksdb.a libglog.a libgflags.a libz.a liblz4.a)
set(CLI_LIBS libev.a libinterface.a libprotobuf.a libglog.a libgflags.a libz.a liblz4.a)
set(TEST_LIB libev.a libinterface.a libprotobuf.a libbenchmark_main.a libbenchmark.a libgtest.a librocksdb.a libglog.a libgflags.a libz.a liblz4.a)
if (${CMAKE_SYSTEM_NAME} STREQUAL Linux)
set(LINUX_LINKS pthread)
endif()
# chakra
add_executable(chakra src/main.cpp
${UTILS_SRC}
${CLIENT_SRC}
${CLUSTER_SRC}
${CMDS_SRC}
${DATABASE_SRC}
${NET_SRC}
${SERVICE_SRC}
${REPLICA_SRC}
${ERROR_SRC}
)
add_dependencies(chakra interface ev protobuf rocksdb glog gflags gtest zlib lz4)
target_include_directories(
chakra SYSTEM PRIVATE
${CMAKE_SOURCE_DIR}/build/depends/Install/include
${CMAKE_SOURCE_DIR}/src
)
target_link_directories(chakra PRIVATE
${CMAKE_SOURCE_DIR}/build/depends/Install/lib
${CMAKE_SOURCE_DIR}/build/depends/Install/lib64
)
target_link_libraries(chakra ${LIBS} ${LINUX_LINKS})
# cli
add_executable(chakra-cli src/cli/main.cpp
${CLIENT_SRC}
${CLI_SRC}
${NET_SRC}
${ERROR_SRC}
)
add_dependencies(chakra-cli interface ev protobuf rocksdb glog gflags gtest zlib lz4)
target_include_directories(chakra-cli SYSTEM PRIVATE
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/src/cli/interface
${CMAKE_SOURCE_DIR}/build/depends/Install/include
)
target_link_directories(chakra-cli PRIVATE
${CMAKE_SOURCE_DIR}/build/depends/Install/lib
${CMAKE_SOURCE_DIR}/build/depends/Install/lib64
)
target_link_libraries(chakra-cli ${CLI_LIBS} ${LINUX_LINKS})
# ut
add_executable(ut
${TEST_SRC}
${UTILS_SRC}
${CLIENT_SRC}
${NET_SRC}
${DATABASE_SRC}
${ERROR_SRC}
)
add_dependencies(ut interface ev protobuf rocksdb glog gflags gbenchmark gtest zlib lz4)
target_include_directories(ut SYSTEM PRIVATE
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/src/unittest
${CMAKE_SOURCE_DIR}/build/depends/Install/include
)
target_link_directories(ut PRIVATE
${CMAKE_SOURCE_DIR}/build/depends/Install/lib
${CMAKE_SOURCE_DIR}/build/depends/Install/lib64
)
target_link_libraries(ut ${TEST_LIB} ${LINUX_LINKS})
# ut
add_executable(bm
${BM_SRC}
${UTILS_SRC}
${CLIENT_SRC}
${NET_SRC}
${DATABASE_SRC}
${ERROR_SRC}
)
add_dependencies(bm interface ev protobuf rocksdb glog gflags gbenchmark gtest zlib lz4)
target_include_directories(bm SYSTEM PRIVATE
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/src/unittest
${CMAKE_SOURCE_DIR}/build/depends/Install/include
)
target_link_directories(bm PRIVATE
${CMAKE_SOURCE_DIR}/build/depends/Install/lib
${CMAKE_SOURCE_DIR}/build/depends/Install/lib64
)
target_link_libraries(bm ${TEST_LIB} ${LINUX_LINKS})