From 208d017cc3ea995ee7cc19a8c4da936246b38806 Mon Sep 17 00:00:00 2001 From: pajlada Date: Sat, 10 Apr 2021 13:26:20 +0200 Subject: [PATCH] Add sanitizers for cmake (#2608) These can be enabled using the `SANITIZE_{ADDRESS,MEMORY,THREAD,UNDEFINED}` cmake flags --- .gitmodules | 3 +++ CMakeLists.txt | 3 +++ cmake/sanitizers-cmake | 1 + src/CMakeLists.txt | 1 + tests/CMakeLists.txt | 1 + 5 files changed, 9 insertions(+) create mode 160000 cmake/sanitizers-cmake diff --git a/.gitmodules b/.gitmodules index 1467b973..65a01c9a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,6 @@ [submodule "lib/websocketpp"] path = lib/websocketpp url = https://github.com/ziocleto/websocketpp +[submodule "cmake/sanitizers-cmake"] + path = cmake/sanitizers-cmake + url = https://github.com/arsenm/sanitizers-cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index c0e79ed8..b4e2d66d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,7 @@ include(FeatureSummary) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" + "${CMAKE_SOURCE_DIR}/cmake/sanitizers-cmake/cmake" ) project(chatterino VERSION 2.2.3) @@ -44,6 +45,8 @@ if (WIN32) find_package(WinToast REQUIRED) endif () +find_package(Sanitizers) + # Find boost on the system find_package(Boost REQUIRED) diff --git a/cmake/sanitizers-cmake b/cmake/sanitizers-cmake new file mode 160000 index 00000000..99e159ec --- /dev/null +++ b/cmake/sanitizers-cmake @@ -0,0 +1 @@ +Subproject commit 99e159ec9bc8dd362b08d18436bd40ff0648417b diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1e0ad2e5..397ccb8d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -460,6 +460,7 @@ endif () source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${SOURCE_FILES}) add_executable(${PROJECT_NAME} ${SOURCE_FILES}) +add_sanitizers(${PROJECT_NAME}) target_precompile_headers(${PROJECT_NAME} PRIVATE PrecompiledHeader.hpp) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index dc47bea9..941b000f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME} ${chatterino_SOURCES} ${test_SOURCES} ) +add_sanitizers(${PROJECT_NAME}) # Enable autogeneration of Qts MOC/RCC/UIC set_target_properties(${PROJECT_NAME}