diff --git a/CMakeLists.txt b/CMakeLists.txt index f095adfb..d08951f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,9 +7,11 @@ set (CPACK_PACKAGE_VERSION_PATCH "0") set (RAIBLOCKS_GUI OFF CACHE BOOL "") set (RAIBLOCKS_TEST OFF CACHE BOOL "") - +option(RAIBLOCKS_ASAN_INT "Enable ASan+UBSan+Integer overflow" OFF) +option(RAIBLOCKS_ASAN "Enable ASan+UBSan" OFF) option(RAIBLOCKS_SIMD_OPTIMIZATIONS "Enable CPU-specific SIMD optimizations (SSE/AVX or NEON, e.g.)" ON) + if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) endif(NOT CMAKE_BUILD_TYPE) @@ -19,6 +21,14 @@ if (WIN32) set (BLAKE2_IMPLEMENTATION "blake2/blake2b.c") else (WIN32) set (PLATFORM_COMPILE_FLAGS "-DBOOST_SPIRIT_THREADSAFE -Werror=switch -fPIC") + if (RAIBLOCKS_ASAN) + set (PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -fsanitize=address,undefined -DED25519_NO_INLINE_ASM") + elseif (RAIBLOCKS_ASAN_INT) + set (PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -fsanitize=address,undefined,integer -DED25519_NO_INLINE_ASM") + elseif (RAIBLOCKS_TSAN) + set (PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -fsanitize=thread -DED25519_NO_INLINE_ASM") + endif() + IF (CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86(_64)?)$") if (RAIBLOCKS_SIMD_OPTIMIZATIONS) set (PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -msse4") @@ -62,6 +72,13 @@ elseif (WIN32) set (PLATFORM_LINK_FLAGS "") else () set (PLATFORM_LINK_FLAGS "-static-libgcc -static-libstdc++") + if (RAIBLOCKS_ASAN) + set (PLATFORM_LINK_FLAGS "${PLATFORM_LINK_FLAGS} -fsanitize=address,undefined") + elseif (RAIBLOCKS_ASAN_INT) + set (PLATFORM_LINK_FLAGS "${PLATFORM_LINK_FLAGS} -fsanitize=address,undefined,integer") + elseif (RAIBLOCKS_TSAN) + set (PLATFORM_LINK_FLAGS "${PLATFORM_LINK_FLAGS} -fsanitize=thread") + endif() endif (APPLE) if (RAIBLOCKS_GUI)