1
- cmake_minimum_required (VERSION 3.2 )
2
- project (trantor )
3
-
4
- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
5
- #Clang, use c++17
6
- set (DEFS "USE_STD_ANY" )
7
- set (USE_STD_ANY 1 )
8
- set (CMAKE_CXX_STD_FLAGS c++17 )
9
- else ()
10
- EXEC_PROGRAM (gcc ARGS "--version | grep '^gcc'|awk '{print $3}' | sed s'/)//g' | sed s'/-.*//g'" OUTPUT_VARIABLE version )
11
- MESSAGE (STATUS "This is gcc version:: " ${version} )
12
- if (version LESS 5.4.0 )
13
- MESSAGE (STATUS "gcc is too old" )
14
- stop ()
15
- elseif (version LESS 7.1.0 )
16
- set (CMAKE_CXX_STD_FLAGS c++14 )
17
- MESSAGE (STATUS "c++14" )
18
- else ()
19
- set (CMAKE_CXX_STD_FLAGS c++17 )
20
- set (DEFS "USE_STD_ANY" )
21
- set (USE_STD_ANY 1 )
22
- MESSAGE (STATUS "c++17" )
23
- endif ()
24
- endif ()
1
+ CMAKE_MINIMUM_REQUIRED (VERSION 3.2 )
2
+ PROJECT (trantor )
25
3
26
4
# include directories
27
5
INCLUDE_DIRECTORIES (
@@ -33,90 +11,98 @@ INCLUDE_DIRECTORIES(
33
11
/usr/include
34
12
)
35
13
36
- if (CMAKE_BUILD_TYPE STREQUAL "" )
37
- set (CMAKE_BUILD_TYPE Release )
38
- endif ()
39
-
40
- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -std=${CMAKE_CXX_STD_FLAGS} " )
41
- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -std=${CMAKE_CXX_STD_FLAGS} " )
42
-
43
-
44
14
# lib directories
45
15
LINK_DIRECTORIES (
46
16
${PROJECT_BINARY_DIR} /
47
17
/usr/local/lib
48
18
/usr/lib
49
19
)
50
20
51
- AUX_SOURCE_DIRECTORY (trantor/utils DIR_SRC )
52
- AUX_SOURCE_DIRECTORY (trantor/net DIR_SRC )
53
- AUX_SOURCE_DIRECTORY (trantor/net/inner DIR_SRC )
54
- find_package (OpenSSL )
55
- if (OpenSSL_FOUND )
56
- #add_definitions(-DUSE_OPENSSL)
57
- set (DEFS "USE_OPENSSL;${DEFS} " )
21
+ SET (public_net_headers
22
+ trantor/net/EventLoop.h
23
+ trantor/net/EventLoopThread.h
24
+ trantor/net/EventLoopThreadPool.h
25
+ trantor/net/InetAddress.h
26
+ trantor/net/TcpClient.h
27
+ trantor/net/TcpConnection.h
28
+ trantor/net/TcpServer.h
29
+ trantor/net/callbacks.h )
30
+
31
+ SET (public_utils_headers
32
+ trantor/utils/AsyncFileLogger.h
33
+ trantor/utils/ConcurrentTaskQueue.h
34
+ trantor/utils/Date.h
35
+ trantor/utils/Funcs.h
36
+ trantor/utils/LockFreeQueue.h
37
+ trantor/utils/LogStream.h
38
+ trantor/utils/Logger.h
39
+ trantor/utils/MsgBuffer.h
40
+ trantor/utils/NonCopyable.h
41
+ trantor/utils/ObjectPool.h
42
+ trantor/utils/SerialTaskQueue.h
43
+ trantor/utils/TaskQueue.h
44
+ trantor/utils/TimingWheel.h )
45
+
46
+ SOURCE_GROUP ( "Public API" FILES ${public_net_headers} ${public_utils_headers} )
47
+
48
+ SET (trantor_sources
49
+ trantor/utils/AsyncFileLogger.cc
50
+ trantor/utils/ConcurrentTaskQueue.cc
51
+ trantor/utils/Date.cc
52
+ trantor/utils/LogStream.cc
53
+ trantor/utils/Logger.cc
54
+ trantor/utils/MsgBuffer.cc
55
+ trantor/utils/SerialTaskQueue.cc
56
+ trantor/utils/TimingWheel.cc
57
+ trantor/net/EventLoop.cc
58
+ trantor/net/EventLoopThread.cc
59
+ trantor/net/EventLoopThreadPool.cc
60
+ trantor/net/InetAddress.cc
61
+ trantor/net/TcpClient.cc
62
+ trantor/net/TcpServer.cc
63
+ trantor/net/inner/Acceptor.cc
64
+ trantor/net/inner/Channel.cc
65
+ trantor/net/inner/Connector.cc
66
+ trantor/net/inner/Poller.cc
67
+ trantor/net/inner/Socket.cc
68
+ trantor/net/inner/TcpConnectionImpl.cc
69
+ trantor/net/inner/Timer.cc
70
+ trantor/net/inner/TimerQueue.cc )
71
+
72
+ FIND_PACKAGE (OpenSSL )
73
+ IF (OpenSSL_FOUND )
58
74
include_directories (${OPENSSL_INCLUDE_DIR} )
59
- link_libraries (${OPENSSL_LIBRARIES} )
60
- AUX_SOURCE_DIRECTORY (trantor/net/ssl DIR_SRC )
61
- endif ()
75
+ LINK_LIBRARIES (${OPENSSL_LIBRARIES} )
76
+ SET (trantor_sources ${trantor_sources} trantor/net/ssl/SSLConnection.cc )
77
+ ELSE ()
78
+ SET (trantor_sources ${trantor_sources} trantor/net/ssl/SSLConnectionSkipped.cc )
79
+ ENDIF ()
62
80
63
81
IF (CMAKE_SYSTEM_NAME MATCHES "Linux" )
64
- ADD_LIBRARY ( trantor ${DIR_SRC } ${PROJECT_SOURCE_DIR} /trantor/net/inner/poller/EpollPoller.cc )
82
+ SET ( trantor_sources ${trantor_sources } ${PROJECT_SOURCE_DIR} /trantor/net/inner/poller/EpollPoller.cc )
65
83
MESSAGE (STATUS "current platform: Linux " )
66
84
ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows" )
67
- MESSAGE (STATUS "current platform: Windows" )
85
+ MESSAGE (FATAL_ERROR "Error: Currently does not support Windows" )
68
86
ELSEIF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
69
- ADD_LIBRARY ( trantor ${DIR_SRC } ${PROJECT_SOURCE_DIR} /trantor/net/inner/poller/KQueue.cc )
87
+ SET ( trantor_sources ${trantor_sources } ${PROJECT_SOURCE_DIR} /trantor/net/inner/poller/KQueue.cc )
70
88
MESSAGE (STATUS "current platform: FreeBSD" )
71
89
ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Darwin" )
72
- #ADD_LIBRARY(trantor ${DIR_SRC} ${PROJECT_SOURCE_DIR}/trantor/net/inner/poller/PollPoller.cc)
73
- ADD_LIBRARY (trantor ${DIR_SRC} ${PROJECT_SOURCE_DIR} /trantor/net/inner/poller/KQueue.cc )
90
+ SET (trantor_sources ${trantor_sources} ${PROJECT_SOURCE_DIR} /trantor/net/inner/poller/KQueue.cc )
74
91
MESSAGE (STATUS "current platform: MacOS" )
75
92
ELSE ()
76
93
MESSAGE (STATUS "other platform: ${CMAKE_SYSTEM_NAME} " )
77
94
ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux" )
78
95
96
+ ADD_LIBRARY (trantor ${trantor_sources} )
97
+ SET_PROPERTY (TARGET trantor PROPERTY CXX_STANDARD 14 )
98
+ SET_PROPERTY (TARGET trantor PROPERTY CXX_STANDARD_REQUIRED ON )
99
+ SET_PROPERTY (TARGET trantor PROPERTY CXX_EXTENSIONS OFF )
79
100
80
- SET (CONFIG_HEADER "${PROJECT_SOURCE_DIR} /config.h" )
81
- file (WRITE "${CONFIG_HEADER} " "#pragma once\n " )
82
- foreach (loop_var ${DEFS} )
83
- file (APPEND "${CONFIG_HEADER} " "#define ${loop_var} \n " )
84
- endforeach (loop_var )
85
- file (APPEND "${CONFIG_HEADER} " "\n " )
86
-
87
- if (DEFINED USE_STD_ANY )
88
-
89
- file (APPEND "${CONFIG_HEADER} " "#include <any>\n " )
90
- file (APPEND "${CONFIG_HEADER} " "using std::any;\n " )
91
- file (APPEND "${CONFIG_HEADER} " "using std::any_cast;\n\n " )
92
- file (APPEND "${CONFIG_HEADER} " "#include <string_view>\n " )
93
- file (APPEND "${CONFIG_HEADER} " "typedef std::string_view string_view;\n\n " )
94
-
95
- else ()
96
-
97
- file (APPEND "${CONFIG_HEADER} " "#include <experimental/any>\n " )
98
- file (APPEND "${CONFIG_HEADER} " "using std::experimental::any;\n " )
99
- file (APPEND "${CONFIG_HEADER} " "using std::experimental::any_cast;\n\n " )
100
- file (APPEND "${CONFIG_HEADER} " "#include <experimental/string_view>\n " )
101
- file (APPEND "${CONFIG_HEADER} " "typedef std::experimental::basic_string_view<char> string_view;\n\n " )
102
-
103
- endif ()
104
-
105
- EXEC_PROGRAM (${PROJECT_SOURCE_DIR} /update_config.sh ARGS "${CONFIG_HEADER} ${PROJECT_SOURCE_DIR} /trantor/utils/config.h" )
106
-
107
- if (MAKETEST STREQUAL YES )
101
+ IF (MAKETEST STREQUAL YES )
108
102
ADD_SUBDIRECTORY (trantor/tests )
109
- endif ()
110
-
111
- #install
112
-
113
- install (TARGETS trantor DESTINATION lib )
114
-
115
- install (DIRECTORY trantor/utils/ DESTINATION include /trantor/utils
116
- FILES_MATCHING PATTERN "*.h" )
117
-
118
- file (GLOB trantor_net_headers "${CMAKE_CURRENT_SOURCE_DIR} /trantor/net/*.h" )
119
- install (FILES ${trantor_net_headers} DESTINATION include /trantor/net )
120
-
103
+ ENDIF ()
121
104
105
+ INSTALL (TARGETS trantor DESTINATION lib )
122
106
107
+ INSTALL (FILES ${public_net_headers} DESTINATION include /trantor/net )
108
+ INSTALL (FILES ${public_utils_headers} DESTINATION include /trantor/utils )
0 commit comments