Skip to content

Commit d13db72

Browse files
committed
opt(base,event):1.12.3, 优化CMakeLists.txt,使之能自动适应execinfo.h与epoll的支持情况
1 parent 0660ad8 commit d13db72

File tree

4 files changed

+44
-7
lines changed

4 files changed

+44
-7
lines changed

modules/base/CMakeLists.txt

+11
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
# of the source tree.
1919
#
2020

21+
include(CheckSymbolExists)
22+
2123
set(TBOX_BASE_VERSION_MAJOR 1)
2224
set(TBOX_BASE_VERSION_MINOR 0)
2325
set(TBOX_BASE_VERSION_PATCH 1)
@@ -68,6 +70,15 @@ set(TBOX_BASE_TEST_SOURCES
6870
object_pool_test.cpp
6971
recorder_test.cpp)
7072

73+
check_symbol_exists(backtrace "execinfo.h" HAVE_EXECINFO_H)
74+
75+
if (HAVE_EXECINFO_H)
76+
add_definitions(-DHAVE_EXECINFO_H=1)
77+
else()
78+
message(WARNING "not support execinfo.h, can't use ::backtrace()"
79+
add_definitions(-DHAVE_EXECINFO_H=0)
80+
endif()
81+
7182
add_library(${TBOX_LIBRARY_NAME} ${TBOX_BUILD_LIB_TYPE} ${TBOX_BASE_SOURCES})
7283
add_library(tbox::${TBOX_LIBRARY_NAME} ALIAS ${TBOX_LIBRARY_NAME})
7384

modules/base/Makefile

+2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ CXXFLAGS += -DMODULE_ID='"tbox.base"'
6464

6565
ifeq ($(HAVE_EXECINFO_H),yes)
6666
CXXFLAGS += -DHAVE_EXECINFO_H=1
67+
else
68+
CXXFLAGS += -DHAVE_EXECINFO_H=0
6769
endif
6870

6971
TEST_CPP_SRC_FILES = \

modules/event/CMakeLists.txt

+30-6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
cmake_minimum_required(VERSION 3.15)
2222

23+
include(CheckSymbolExists)
24+
2325
set(TBOX_EVENT_VERSION_MAJOR 1)
2426
set(TBOX_EVENT_VERSION_MINOR 1)
2527
set(TBOX_EVENT_VERSION_PATCH 2)
@@ -36,7 +38,8 @@ set(TBOX_EVENT_HEADERS
3638
fd_event.h
3739
timer_event.h
3840
signal_event.h
39-
stat.h)
41+
stat.h
42+
)
4043

4144
set(TBOX_EVENT_SOURCES
4245
loop.cpp
@@ -48,16 +51,37 @@ set(TBOX_EVENT_SOURCES
4851
signal_event_impl.cpp
4952
misc.cpp
5053
stat.cpp
51-
engines/epoll/loop.cpp
52-
engines/epoll/fd_event.cpp
53-
engines/select/loop.cpp
54-
engines/select/fd_event.cpp)
54+
)
5555

5656
set(TBOX_EVENT_TEST_SOURCES
5757
common_loop_test.cpp
5858
fd_event_test.cpp
5959
timer_event_test.cpp
60-
signal_event_test.cpp)
60+
signal_event_test.cpp
61+
)
62+
63+
check_symbol_exists(select "sys/select.h" HAVE_SELECT)
64+
check_symbol_exists(epoll_create1 "sys/epoll.h" HAVE_EPOLL)
65+
66+
if (NOT HAVE_SELECT AND NOT HAVE_EPOLL)
67+
message(FATAL_ERROR "Neither epoll nor select is supported by the system. Project cannot proceed.")
68+
endif()
69+
70+
if (HAVE_SELECT)
71+
add_definitions(-DHAVE_SELECT=1)
72+
list(APPEND TBOX_EVENT_SOURCES
73+
engines/select/loop.cpp
74+
engines/select/fd_event.cpp
75+
)
76+
endif()
77+
78+
if (HAVE_EPOLL)
79+
add_definitions(-DHAVE_EPOLL=1)
80+
list(APPEND TBOX_EVENT_SOURCES
81+
engines/epoll/loop.cpp
82+
engines/epoll/fd_event.cpp
83+
)
84+
endif()
6185

6286
add_library(${TBOX_LIBRARY_NAME} ${TBOX_BUILD_LIB_TYPE} ${TBOX_EVENT_SOURCES})
6387
add_library(tbox::${TBOX_LIBRARY_NAME} ALIAS ${TBOX_LIBRARY_NAME})

version.mk

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@
2121
# TBOX版本号
2222
TBOX_VERSION_MAJOR := 1
2323
TBOX_VERSION_MINOR := 12
24-
TBOX_VERSION_REVISION := 2
24+
TBOX_VERSION_REVISION := 3

0 commit comments

Comments
 (0)