Skip to content

Commit f2a9e21

Browse files
authored
Support cmake (#46)
1 parent b5c5f3d commit f2a9e21

7 files changed

Lines changed: 160 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
cmake_minimum_required(VERSION 3.14)
2+
3+
project(sentinel-cpp VERSION 1.0.1 LANGUAGES C CXX)
4+
5+
set(CMAKE_CXX_STANDARD 14)
6+
7+
set(SENTINEL_ROOT_DIR "${CMAKE_SOURCE_DIR}")
8+
set(SENTINEL_CORE_ROOT_DIR "${CMAKE_SOURCE_DIR}/sentinel-core")
9+
10+
include( cmake/common.cmake )

cmake/common.cmake

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
cmake_minimum_required( VERSION 3.14 )
2+
3+
find_package(Libevent REQUIRED)
4+
include_directories(${LIBEVENT_INCLUDE_DIR})
5+
6+
include( ${SENTINEL_ROOT_DIR}/cmake/third_party.cmake )
7+
8+
include_directories( ${SENTINEL_ROOT_DIR} )
9+
10+
include_directories(${SENTINEL_CORE_ROOT_DIR}/common)
11+
include_directories(${SENTINEL_CORE_ROOT_DIR}/config)
12+
include_directories(${SENTINEL_CORE_ROOT_DIR}/property)
13+
include_directories(${SENTINEL_CORE_ROOT_DIR}/public)
14+
15+
# common
16+
file(GLOB COMMON_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/common/*.cc")
17+
file(GLOB COMMON_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/common/*_test.cc")
18+
list(REMOVE_ITEM COMMON_SOURCE_FILES ${COMMON_TEST_SOURCE_FILES})
19+
20+
# config
21+
file(GLOB CONFIG_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/config/*.cc")
22+
file(GLOB CONFIG_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/config/*_test.cc")
23+
list(REMOVE_ITEM CONFIG_SOURCE_FILES ${CONFIG_TEST_SOURCE_FILES})
24+
25+
# log
26+
file(GLOB_RECURSE LOG_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/log/*.cc")
27+
file(GLOB_RECURSE LOG_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/log/*_test.cc")
28+
list(REMOVE_ITEM LOG_SOURCE_FILES ${LOG_TEST_SOURCE_FILES})
29+
30+
# utils
31+
file(GLOB UTILS_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/utils/*.cc")
32+
# file(GLOB UTILS_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/utils/*test.cc")
33+
# list(REMOVE_ITEM UTILS_SOURCE_FILES ${UTILS_TEST_SOURCE_FILES})
34+
35+
# slot
36+
file(GLOB_RECURSE SLOT_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/slot/*.cc")
37+
file(GLOB_RECURSE SLOT_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/slot/*_test.cc")
38+
list(REMOVE_ITEM SLOT_SOURCE_FILES ${SLOT_TEST_SOURCE_FILES})
39+
40+
# statistic
41+
file(GLOB_RECURSE STATISTIC_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/statistic/*.cc")
42+
file(GLOB_RECURSE STATISTIC_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/statistic/*_test.cc")
43+
list(REMOVE_ITEM STATISTIC_SOURCE_FILES ${STATISTIC_TEST_SOURCE_FILES})
44+
45+
# transport
46+
file(GLOB_RECURSE TRANSPORT_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/transport/*.cc")
47+
file(GLOB_RECURSE TRANSPORT_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/transport/*_test.cc")
48+
list(REMOVE_ITEM TRANSPORT_SOURCE_FILES ${TRANSPORT_TEST_SOURCE_FILES})
49+
50+
# flow
51+
file(GLOB FLOW_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/flow/*.cc")
52+
file(GLOB FLOW_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/flow/*_test.cc")
53+
list(REMOVE_ITEM FLOW_SOURCE_FILES ${FLOW_TEST_SOURCE_FILES})
54+
55+
# circuitbreaker
56+
file(GLOB CIRCUIT_BREAKER_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/circuitbreaker/*.cc")
57+
file(GLOB CIRCUIT_BREAKER_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/circuitbreaker/*_test.cc")
58+
list(REMOVE_ITEM CIRCUIT_BREAKER_SOURCE_FILES ${CIRCUIT_BREAKER_TEST_SOURCE_FILES})
59+
60+
# param
61+
file(GLOB_RECURSE PARAM_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/param/*.cc")
62+
file(GLOB_RECURSE PARAM_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/param/*_test.cc")
63+
list(REMOVE_ITEM PARAM_SOURCE_FILES ${PARAM_TEST_SOURCE_FILES})
64+
65+
# system
66+
file(GLOB_RECURSE SYSTEM_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/system/*.cc")
67+
file(GLOB_RECURSE SYSTEM_TEST_SOURCE_FILES "${SENTINEL_CORE_ROOT_DIR}/system/*_test.cc")
68+
list(REMOVE_ITEM SYSTEM_SOURCE_FILES ${SYSTEM_TEST_SOURCE_FILES})
69+
70+
list(APPEND
71+
SENTINEL_SOURCE_FILES
72+
${COMMON_SOURCE_FILES}
73+
${CONFIG_SOURCE_FILES}
74+
${LOG_SOURCE_FILES}
75+
${UTILS_SOURCE_FILES}
76+
${SLOT_SOURCE_FILES}
77+
${STATISTIC_SOURCE_FILES}
78+
${TRANSPORT_SOURCE_FILES}
79+
${FLOW_SOURCE_FILES}
80+
${CIRCUIT_BREAKER_SOURCE_FILES}
81+
${PARAM_SOURCE_FILES}
82+
${SYSTEM_SOURCE_FILES})
83+
84+
add_library(sentinel STATIC ${SENTINEL_SOURCE_FILES})
85+
86+
target_link_libraries(sentinel PUBLIC
87+
libevent::core
88+
libevent::extra
89+
libevent::pthreads
90+
TBB::tbb
91+
spdlog
92+
absl::flat_hash_set
93+
absl::str_format
94+
absl::synchronization
95+
absl::strings
96+
absl::any)

cmake/third_party.cmake

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
cmake_minimum_required( VERSION 3.14 )
2+
include( FetchContent )
3+
4+
#######################################################################
5+
# Declare project dependencies
6+
#######################################################################
7+
8+
FetchContent_Declare( abseil
9+
GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
10+
GIT_TAG 20230125.0
11+
)
12+
13+
FetchContent_Declare( spdlog
14+
GIT_REPOSITORY https://github.com/gabime/spdlog.git
15+
GIT_TAG v1.11.0
16+
)
17+
18+
FetchContent_Declare( onetbb
19+
GIT_REPOSITORY https://github.com/oneapi-src/oneTBB.git
20+
GIT_TAG v2021.9.0
21+
)
22+
23+
FetchContent_MakeAvailable(abseil)
24+
25+
FetchContent_MakeAvailable(spdlog)
26+
27+
FetchContent_MakeAvailable(onetbb)

examples/CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
cmake_minimum_required(VERSION 3.14)
2+
3+
project(sentinel-cpp VERSION 1.0.1 LANGUAGES C CXX)
4+
5+
set(CMAKE_CXX_STANDARD 14)
6+
7+
set(SENTINEL_CORE_ROOT_DIR "${CMAKE_SOURCE_DIR}/../sentinel-core")
8+
9+
set(SENTINEL_ROOT_DIR "${CMAKE_SOURCE_DIR}/..")
10+
11+
include( ${CMAKE_SOURCE_DIR}/../cmake/common.cmake )
12+
13+
# basic_qps_limit
14+
add_executable(basic_qps_limit ${CMAKE_SOURCE_DIR}/../examples/sentinel-cpp/basic_qps_limit.cc)
15+
target_link_libraries(basic_qps_limit sentinel)
16+
17+
# basic_concurrency_limit
18+
add_executable(basic_concurrency_limit ${CMAKE_SOURCE_DIR}/../examples/sentinel-cpp/basic_concurrency_limit.cc)
19+
target_link_libraries(basic_concurrency_limit sentinel)
20+
21+
# basic_param_limit
22+
add_executable(basic_param_limit ${CMAKE_SOURCE_DIR}/../examples/sentinel-cpp/basic_param_limit.cc)
23+
target_link_libraries(basic_param_limit sentinel)
24+
25+
# basic_system_limit
26+
add_executable(basic_system_limit ${CMAKE_SOURCE_DIR}/../examples/sentinel-cpp/basic_system_limit.cc)
27+
target_link_libraries(basic_system_limit sentinel)

sentinel-core/property/dynamic_sentinel_property_unittests.cc renamed to sentinel-core/property/dynamic_sentinel_property_test.cc

File renamed without changes.

sentinel-core/slot/base/default_slot_chain_impl_unittests.cc renamed to sentinel-core/slot/base/default_slot_chain_impl_test.cc

File renamed without changes.

0 commit comments

Comments
 (0)