-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt.gcc
More file actions
124 lines (99 loc) · 4.5 KB
/
CMakeLists.txt.gcc
File metadata and controls
124 lines (99 loc) · 4.5 KB
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
119
120
121
122
123
124
cmake_minimum_required(VERSION 3.3)
project(bbchatter CXX C)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/build")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(COMMON_COMPILER_FLAGS
-DBOOST_LOG_DYN_LINK
-fprofile-arcs -ftest-coverage
-ftest-coverage
--coverage
-g3
-std=c++1y)
set(MAIN_SOURCE_FILE main.cpp)
# Set the source files
set(SOURCE_FILES
WebSocket.cpp
HTTPParser.cpp
cutils.cpp)
set(SANITIZE_FLAGS_NoSan "")
set(SANITIZE_LINK_FLAGS_NoSan "")
set(SANITIZE_FLAGS_Address -fsanitize=address -fno-omit-frame-pointer -O1 -g -fno-optimize-sibling-calls)
set(SANITIZE_LINK_FLAGS_Address -fsanitize=address)
set(SANITIZE_FLAGS_Undefined -fsanitize=undefined)
set(SANITIZE_LINK_FLAGS_Undefined -fsanitize=undefined)
set(SANITIZE_FLAGS_MemoryWithOrigins -fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O1)
set(SANITIZE_LINK_FLAGS_MemoryWithOrigins -fsanitize=memory)
set(SANITIZE_FLAGS_Thread -fsanitize=thread -g -O1)
set(SANITIZE_LINK_FLAGS_Thread -fsanitize=thread)
foreach(SAN_TYPE NoSan Address Undefined MemoryWithOrigins Thread)
set(LIBCXX_COMPILER_FLAGS_${SAN_TYPE}
-nostdinc++
-isystem${PROJECT_SOURCE_DIR}/deps/libcxx/install_local/NoSan/include
-isystem${PROJECT_SOURCE_DIR}/deps/libcxx/install_local/NoSan/include/c++/v1)
set(LIBCXX_LINK_FLAGS_${SAN_TYPE}
-L${PROJECT_SOURCE_DIR}/deps/libcxx/install_local/${SAN_TYPE}/lib
-L${PROJECT_SOURCE_DIR}/deps/libcxxabi/install_local/${SAN_TYPE}/lib
-stdlib=libc++
-lc++
-lc++abi)
set(COMMON_INCLUDE_DIRS_${SAN_TYPE}
${PROJECT_SOURCE_DIR}/deps/boost/install_local/NoSan/include
${PROJECT_SOURCE_DIR}/deps/gtest/install_local/NoSan/include
${PROJECT_SOURCE_DIR}/deps/http-parser)
set(LINK_LIBRARIES_${SAN_TYPE}
-L${PROJECT_SOURCE_DIR}/deps/boost/install_local/${SAN_TYPE}/lib
-L${PROJECT_SOURCE_DIR}/deps/http-parser/install_local/${SAN_TYPE}/lib
-lboost_system
-lboost_thread
-lboost_filesystem
-lboost_log
-lhttp_parser
-lpthread)
set(LIB_CXX_RPATH_${SAN_TYPE}
"${PROJECT_SOURCE_DIR}/deps/libcxx/install_local/${SAN_TYPE}/lib;${PROJECT_SOURCE_DIR}/deps/libcxxabi/install_local/${SAN_TYPE}/lib")
set(GTEST_INCLUDE_DIRS_${SAN_TYPE}
${PROJECT_SOURCE_DIR}/deps/gtest/install_local/NoSan/include)
set(GTEST_LIBRARY_FLAGS_${SAN_TYPE}
-L${PROJECT_SOURCE_DIR}/deps/gtest/install_local/${SAN_TYPE}/lib
-lgtest
-lgtest_main)
endforeach(SAN_TYPE NoSan Address Undefined MemoryWithOrigins Thread)
add_executable(bbchatter ${MAIN_SOURCE_FILE} ${SOURCE_FILES})
target_link_libraries(bbchatter
-DBOOST_LOG_DYN_LINK
-ltcmalloc
-fprofile-arcs -ftest-coverage
-ftest-coverage
--coverage
-L${PROJECT_SOURCE_DIR}/deps_gcc/http-parser/install_local/lib
-lboost_system
-lboost_thread
-lboost_filesystem
-lboost_log
-lhttp_parser
-lpthread)
target_compile_options(bbchatter PRIVATE ${COMMON_COMPILER_FLAGS} -I${PROJECT_SOURCE_DIR}/deps_gcc/http-parser/install_local/include)
# Google Test
enable_testing()
include (CTest)
set(GTEST_FOUND ON)
file(GLOB TEST_SRC_FILES ${PROJECT_SOURCE_DIR}/test/*.cpp)
foreach(SAN_DIR NoSan Address Undefined MemoryWithOrigins Thread)
set(TEST_BIN_NAME bbchatter_test_${SAN_DIR})
add_executable(${TEST_BIN_NAME} ${SOURCE_FILES} ${TEST_SRC_FILES})
target_compile_options(${TEST_BIN_NAME} PRIVATE ${COMMON_COMPILER_FLAGS} ${LIBCXX_COMPILER_FLAGS_${SAN_DIR}} ${SANITIZE_FLAGS_${SAN_DIR}})
target_link_libraries(${TEST_BIN_NAME} ${LINK_LIBRARIES_${SAN_DIR}} ${LIBCXX_LINK_FLAGS_${SAN_DIR}} ${GTEST_LIBRARY_FLAGS_${SAN_DIR}} ${SANITIZE_LINK_FLAGS_${SAN_DIR}})
target_include_directories(${TEST_BIN_NAME} SYSTEM BEFORE PRIVATE ${COMMON_INCLUDE_DIRS_NoSan})
set_target_properties(${TEST_BIN_NAME}
PROPERTIES
BUILD_WITH_INSTALL_RPATH ON
INSTALL_RPATH "${LIB_CXX_RPATH_${SAN_DIR}}")
add_test(test_${SAN_DIR} ${TEST_BIN_NAME})
################################################
endforeach(SAN_DIR NoSan Address Undefined MemoryWithOrigins Thread)