chore: make sanitizers opt in (#6493)
Make code sanitizers opt in with the `CHATTERINO_SANITIZER_SUPPORT` CMake option. After that's enabled, use the `SANITIZE_*` flag to enable individual sanitizers. Building tests is not required - sanitizers can be enabled in the app by itself.
This commit is contained in:
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
## Unversioned
|
## Unversioned
|
||||||
|
|
||||||
|
- Dev: Make code sanitizers opt in with the `CHATTERINO_SANITIZER_SUPPORT` CMake option. After that's enabled, use the `SANITIZE_*` flag to enable individual sanitizers. (#6493)
|
||||||
|
|
||||||
## 2.5.4
|
## 2.5.4
|
||||||
|
|
||||||
- Bugfix: Fixed crashes that could occur when Lua functions errored with values other than strings. (#6441)
|
- Bugfix: Fixed crashes that could occur when Lua functions errored with values other than strings. (#6441)
|
||||||
|
|||||||
+11
-3
@@ -8,7 +8,6 @@ include(FeatureSummary)
|
|||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH
|
list(APPEND CMAKE_MODULE_PATH
|
||||||
"${CMAKE_SOURCE_DIR}/cmake"
|
"${CMAKE_SOURCE_DIR}/cmake"
|
||||||
"${CMAKE_SOURCE_DIR}/cmake/sanitizers-cmake/cmake"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
option(BUILD_APP "Build Chatterino" ON)
|
option(BUILD_APP "Build Chatterino" ON)
|
||||||
@@ -32,9 +31,20 @@ option(CHATTERINO_PLUGINS "Enable ALPHA plugin support in Chatterino" ON)
|
|||||||
option(CHATTERINO_USE_GDI_FONTENGINE "Use the legacy GDI fontengine instead of the new DirectWrite one on Windows (Qt 6.8.0 and later)" ON)
|
option(CHATTERINO_USE_GDI_FONTENGINE "Use the legacy GDI fontengine instead of the new DirectWrite one on Windows (Qt 6.8.0 and later)" ON)
|
||||||
option(CHATTERINO_ALLOW_PRIVATE_QT_API "Allow uses of Qt's private API - when enabling this, Chatterino must use the EXACT Qt version it was compiled against" OFF)
|
option(CHATTERINO_ALLOW_PRIVATE_QT_API "Allow uses of Qt's private API - when enabling this, Chatterino must use the EXACT Qt version it was compiled against" OFF)
|
||||||
|
|
||||||
|
option(CHATTERINO_SANITIZER_SUPPORT "Attempt to enable Sanitizer support on the test and app targets. Actual sanitizers can then be enabled with the SANITIZE_* options." OFF)
|
||||||
|
mark_as_advanced(CHATTERINO_SANITIZER_SUPPORT)
|
||||||
|
add_feature_info("Chatterino code sanitizer support" CHATTERINO_SANITIZER_SUPPORT "")
|
||||||
|
|
||||||
option(CHATTERINO_UPDATER "Enable update checks" ON)
|
option(CHATTERINO_UPDATER "Enable update checks" ON)
|
||||||
mark_as_advanced(CHATTERINO_UPDATER)
|
mark_as_advanced(CHATTERINO_UPDATER)
|
||||||
|
|
||||||
|
if(CHATTERINO_SANITIZER_SUPPORT)
|
||||||
|
list(APPEND CMAKE_MODULE_PATH
|
||||||
|
"${CMAKE_SOURCE_DIR}/cmake/sanitizers-cmake/cmake"
|
||||||
|
)
|
||||||
|
find_package(Sanitizers REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(BUILD_TESTS)
|
if(BUILD_TESTS)
|
||||||
list(APPEND VCPKG_MANIFEST_FEATURES "tests")
|
list(APPEND VCPKG_MANIFEST_FEATURES "tests")
|
||||||
endif()
|
endif()
|
||||||
@@ -137,8 +147,6 @@ if (WIN32)
|
|||||||
add_subdirectory(lib/WinToast EXCLUDE_FROM_ALL)
|
add_subdirectory(lib/WinToast EXCLUDE_FROM_ALL)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
find_package(Sanitizers QUIET)
|
|
||||||
|
|
||||||
# Find boost on the system
|
# Find boost on the system
|
||||||
find_package(Boost REQUIRED OPTIONAL_COMPONENTS headers)
|
find_package(Boost REQUIRED OPTIONAL_COMPONENTS headers)
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,10 @@ set(benchmark_SOURCES
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${benchmark_SOURCES})
|
add_executable(${PROJECT_NAME} ${benchmark_SOURCES})
|
||||||
add_sanitizers(${PROJECT_NAME})
|
|
||||||
|
if(CHATTERINO_SANITIZER_SUPPORT)
|
||||||
|
add_sanitizers(${PROJECT_NAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-lib)
|
target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-lib)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-mocks)
|
target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-mocks)
|
||||||
|
|||||||
@@ -8,7 +8,10 @@ set(SOURCES
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${SOURCES})
|
add_executable(${PROJECT_NAME} ${SOURCES})
|
||||||
add_sanitizers(${PROJECT_NAME})
|
|
||||||
|
if(CHATTERINO_SANITIZER_SUPPORT)
|
||||||
|
add_sanitizers(${PROJECT_NAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||||
twitch-eventsub-ws
|
twitch-eventsub-ws
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ set(SOURCES
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${SOURCES})
|
add_executable(${PROJECT_NAME} ${SOURCES})
|
||||||
add_sanitizers(${PROJECT_NAME})
|
|
||||||
|
if(CHATTERINO_SANITIZER_SUPPORT)
|
||||||
|
add_sanitizers(${PROJECT_NAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE twitch-eventsub-ws GTest::gtest_main)
|
target_link_libraries(${PROJECT_NAME} PRIVATE twitch-eventsub-ws GTest::gtest_main)
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -922,10 +922,8 @@ if (BUILD_APP)
|
|||||||
add_executable(${EXECUTABLE_PROJECT} main.cpp)
|
add_executable(${EXECUTABLE_PROJECT} main.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(COMMAND add_sanitizers)
|
if(CHATTERINO_SANITIZER_SUPPORT)
|
||||||
add_sanitizers(${EXECUTABLE_PROJECT})
|
add_sanitizers(${EXECUTABLE_PROJECT})
|
||||||
else()
|
|
||||||
message(WARNING "Sanitizers support is disabled")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CHATTERINO_STATIC_QT_BUILD)
|
if (CHATTERINO_STATIC_QT_BUILD)
|
||||||
|
|||||||
@@ -66,7 +66,10 @@ set(test_SOURCES
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${test_SOURCES})
|
add_executable(${PROJECT_NAME} ${test_SOURCES})
|
||||||
add_sanitizers(${PROJECT_NAME})
|
|
||||||
|
if(CHATTERINO_SANITIZER_SUPPORT)
|
||||||
|
add_sanitizers(${PROJECT_NAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-lib)
|
target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-lib)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-mocks)
|
target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-mocks)
|
||||||
|
|||||||
Reference in New Issue
Block a user