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)
253
264# include directories
275INCLUDE_DIRECTORIES (
@@ -33,90 +11,98 @@ INCLUDE_DIRECTORIES(
3311 /usr/include
3412)
3513
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-
4414# lib directories
4515LINK_DIRECTORIES (
4616 ${PROJECT_BINARY_DIR} /
4717 /usr/local/lib
4818 /usr/lib
4919)
5020
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)
5874 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 ()
6280
6381IF (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)
6583 MESSAGE (STATUS "current platform: Linux " )
6684ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows" )
67- MESSAGE (STATUS "current platform: Windows" )
85+ MESSAGE (FATAL_ERROR "Error: Currently does not support Windows" )
6886ELSEIF (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)
7088 MESSAGE (STATUS "current platform: FreeBSD" )
7189ELSEIF (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)
7491 MESSAGE (STATUS "current platform: MacOS" )
7592ELSE ()
7693 MESSAGE (STATUS "other platform: ${CMAKE_SYSTEM_NAME} " )
7794ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux" )
7895
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 )
79100
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 )
108102 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 ()
121104
105+ INSTALL (TARGETS trantor DESTINATION lib)
122106
107+ INSTALL (FILES ${public_net_headers} DESTINATION include /trantor/net)
108+ INSTALL (FILES ${public_utils_headers} DESTINATION include /trantor/utils)
0 commit comments