From 737e8b9e2db00e13993a1a010ade62ea051f25fa Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Fri, 18 Dec 2020 23:17:49 +0100 Subject: [PATCH] Add ASAN/TSAN/UBSAN flags --- CMakeLists.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a1ed460b..0eed3e56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,9 @@ cmake_minimum_required(VERSION 3.13.4) option(WITH_TESTS "build with tests" OFF) option(WITH_PYTHON "build with Python scripting support" OFF) +option(ENABLE_ASAN "enable address sanitizer" OFF) +option(ENABLE_TSAN "enable thread sanitizer" OFF) +option(ENABLE_UBSAN "enable undefined behaviour sanitizer" OFF) option(STATIC_BUILD_DO_NOT_USE "try static build (experimental)" OFF) set(default_build_type "Release") @@ -395,6 +398,21 @@ foreach(tgt dwarfs ${BINARY_TARGETS}) set_property(TARGET ${tgt} PROPERTY CXX_EXTENSIONS OFF) add_dependencies(${tgt} metadata_thrift) + + if(ENABLE_ASAN) + target_compile_options(${tgt} PRIVATE -fsanitize=address -fno-omit-frame-pointer) + target_link_options(${tgt} PRIVATE -fsanitize=address) + endif() + + if(ENABLE_TSAN) + target_compile_options(${tgt} PRIVATE -fsanitize=thread -fno-omit-frame-pointer) + target_link_options(${tgt} PRIVATE -fsanitize=thread) + endif() + + if(ENABLE_UBSAN) + target_compile_options(${tgt} PRIVATE -fsanitize=undefined -fno-omit-frame-pointer) + target_link_options(${tgt} PRIVATE -fsanitize=undefined) + endif() endforeach() target_link_libraries(