|
1 | 1 | cmake_minimum_required(VERSION 3.3) |
2 | 2 | set(CMAKE_MACOSX_RPATH OFF) |
3 | | -if (NOT CMAKE_BUILD_TYPE) |
4 | | - message(STATUS "No build type selected, default to Release") |
5 | | - set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) |
6 | | -endif() |
7 | | - |
8 | 3 | project(STREAMVBYTE VERSION "1.0.0") |
9 | 4 |
|
10 | 5 | set(STREAMVBYTE_LIB_VERSION "1.0.0" CACHE STRING "streamvbyte library version") |
11 | 6 | set(STREAMVBYTE_LIB_SOVERSION "1" CACHE STRING "streamvbyte library soversion") |
12 | 7 |
|
13 | 8 | set(CMAKE_C_STANDARD 99) |
14 | 9 | set(CMAKE_C_STANDARD_REQUIRED ON) |
| 10 | +option(STREAMVBYTE_SANITIZE "Sanitize addresses" OFF) |
| 11 | +if (NOT CMAKE_BUILD_TYPE) |
| 12 | + message(STATUS "No build type selected") |
| 13 | + if(STREAMVBYTE_SANITIZE) |
| 14 | + message(STATUS "Default to Debug") |
| 15 | + set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE) |
| 16 | + else() |
| 17 | + message(STATUS "Default to Release") |
| 18 | + set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) |
| 19 | + endif() |
| 20 | +endif() |
| 21 | + |
| 22 | +if(STREAMVBYTE_SANITIZE) |
| 23 | + message(STATUS "Enabling memory sanitizer.") |
| 24 | + add_compile_options(-fsanitize=address -fno-omit-frame-pointer -fno-sanitize-recover=all) |
| 25 | + add_compile_definitions(ASAN_OPTIONS=detect_leaks=1) |
| 26 | +endif() |
| 27 | + |
15 | 28 | if (MSVC) |
16 | 29 | add_definitions( |
17 | 30 | "-D__restrict__=__restrict" |
@@ -70,6 +83,7 @@ install( |
70 | 83 | TARGETS streamvbyte streamvbyte_static |
71 | 84 | DESTINATION lib) |
72 | 85 |
|
| 86 | + |
73 | 87 | option(STREAMVBYTE_SANITIZE_UNDEFINED "Sanitize undefined behavior" OFF) |
74 | 88 | if(STREAMVBYTE_SANITIZE_UNDEFINED) |
75 | 89 | add_compile_options(-fsanitize=undefined -fno-sanitize-recover=all) |
|
0 commit comments