@@ -14,6 +14,21 @@ set(SHORT_API_VERSION "${GridInit_VERSION_MAJOR}.${GridInit_VERSION_MINOR}")
14
14
add_definitions (-DAPI_VERSION= "${API_VERSION} " )
15
15
add_definitions (-DSHORT_API_VERSION= "${SHORT_API_VERSION} " )
16
16
17
+ option (ASAN "Enable ASAN (address sanitizer)" OFF )
18
+ option (TSAN "Enable TSAN (thread sanitizer)" OFF )
19
+ option (FSAN "Enable FSAN (frames sanitizer)" OFF )
20
+
21
+ set (SAN_CFLAGS "" )
22
+ if (ASAN )
23
+ set (SAN_CFLAGS "-fno-omit-frame-pointer -fsanitize=address" )
24
+ endif ()
25
+ if (TSAN )
26
+ set (SAN_CFLAGS "-fno-omit-frame-pointer -fsanitize=thread" )
27
+ endif ()
28
+ if (FRAMES )
29
+ set (SAN_CFLAGS "${SAN_CFLAGS} -fstack-protector-all" )
30
+ endif ()
31
+
17
32
set (CMAKE_C_FLAGS "-g -Wall -Wextra -Wunused -pipe -std=gnu99" )
18
33
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC" )
19
34
@@ -22,6 +37,7 @@ if (CMAKE_COMPILER_IS_GNUCC)
22
37
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wsequence-point" )
23
38
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wredundant-decls" )
24
39
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow" )
40
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wtrampolines" )
25
41
26
42
# gcc >= 4.2
27
43
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcomment" )
@@ -39,14 +55,15 @@ if (CMAKE_COMPILER_IS_GNUCC)
39
55
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion")
40
56
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wswitch-enum")
41
57
endif ()
58
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SAN_CFLAGS} " )
42
59
43
60
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
44
61
MESSAGE ("DEBUG symbols enabled" )
45
62
endif ()
46
63
47
64
set (CMAKE_C_FLAGS_DEBUG "-O0 -fno-inline" )
48
65
set (CMAKE_C_FLAGS_RELEASE "-O2" )
49
- set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -fno-inline " )
66
+ set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2" )
50
67
set (CMAKE_C_FLAGS_MINSIZEREL "-Os" )
51
68
52
69
add_definitions (-D_REENTRANT )
0 commit comments