mirror of
https://github.com/rwengine/openrw.git
synced 2024-11-25 11:52:40 +01:00
Add sanitizers
Leak sanitizer - tracks leaks. Address sanitizer - like above and prohibiteted operations on memory. Thread sanitizer - tracks data races. Undefined behaviour - like name says. ;)
This commit is contained in:
parent
d03a33c284
commit
ec92476818
@ -18,6 +18,8 @@ set(_ARGS_BOOL
|
|||||||
|
|
||||||
RUN_MEMCHECK
|
RUN_MEMCHECK
|
||||||
|
|
||||||
|
ENABLE_SANITIZERS
|
||||||
|
|
||||||
APPEND_RESULTS
|
APPEND_RESULTS
|
||||||
RUN_COVERAGE
|
RUN_COVERAGE
|
||||||
SUBMIT
|
SUBMIT
|
||||||
@ -93,6 +95,7 @@ set(_CONFIGURE_OPTIONS
|
|||||||
"-DSEPARATE_TEST_SUITES=${SEPARATE_TEST_SUITES}"
|
"-DSEPARATE_TEST_SUITES=${SEPARATE_TEST_SUITES}"
|
||||||
"-DCHECK_INCLUDES=${CHECK_INCLUDES}"
|
"-DCHECK_INCLUDES=${CHECK_INCLUDES}"
|
||||||
"-DCMAKE_BUILD_TYPE=${_CMAKE_BUILD_TYPE}"
|
"-DCMAKE_BUILD_TYPE=${_CMAKE_BUILD_TYPE}"
|
||||||
|
"-DENABLE_SANITIZERS=${ENABLE_SANITIZERS}"
|
||||||
)
|
)
|
||||||
|
|
||||||
message(STATUS "Configuring...")
|
message(STATUS "Configuring...")
|
||||||
|
@ -4,6 +4,7 @@ set(CONFIGURE_EXTRA_OPTIONS ";")
|
|||||||
set(BUILD_VIEWER TRUE)
|
set(BUILD_VIEWER TRUE)
|
||||||
set(COVERAGE_COMMAND gcov)
|
set(COVERAGE_COMMAND gcov)
|
||||||
set(CHECK_INCLUDES FALSE)
|
set(CHECK_INCLUDES FALSE)
|
||||||
|
set(ENABLE_SANITIZERS "none")
|
||||||
|
|
||||||
if(MODEL_NAME STREQUAL "EXPERIMENTAL")
|
if(MODEL_NAME STREQUAL "EXPERIMENTAL")
|
||||||
set(CHECK_INCLUDES FALSE)
|
set(CHECK_INCLUDES FALSE)
|
||||||
|
@ -4,6 +4,7 @@ set(CONFIGURE_EXTRA_OPTIONS ";")
|
|||||||
set(BUILD_VIEWER TRUE)
|
set(BUILD_VIEWER TRUE)
|
||||||
set(COVERAGE_COMMAND gcov)
|
set(COVERAGE_COMMAND gcov)
|
||||||
set(CHECK_INCLUDES FALSE)
|
set(CHECK_INCLUDES FALSE)
|
||||||
|
set(ENABLE_SANITIZERS "address")
|
||||||
|
|
||||||
if(MODEL_NAME STREQUAL "EXPERIMENTAL")
|
if(MODEL_NAME STREQUAL "EXPERIMENTAL")
|
||||||
set(CHECK_INCLUDES FALSE)
|
set(CHECK_INCLUDES FALSE)
|
||||||
|
@ -102,3 +102,4 @@ set(CONFIGURE_EXTRA_OPTIONS
|
|||||||
set(BUILD_VIEWER FALSE) #FIXME: ENABLE
|
set(BUILD_VIEWER FALSE) #FIXME: ENABLE
|
||||||
set(COVERAGE_COMMAND "echo") #FIXME: ENABLE
|
set(COVERAGE_COMMAND "echo") #FIXME: ENABLE
|
||||||
set(CHECK_INCLUDES FALSE) #FIXME: ENABLE
|
set(CHECK_INCLUDES FALSE) #FIXME: ENABLE
|
||||||
|
set(ENABLE_SANITIZERS "none")
|
||||||
|
@ -123,6 +123,28 @@ if(TEST_COVERAGE)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
foreach(SAN ${ENABLE_SANITIZERS})
|
||||||
|
if(${SAN} STREQUAL "address")
|
||||||
|
message(STATUS "Address sanitizer enabled.")
|
||||||
|
target_compile_options(rw_interface INTERFACE "-fsanitize=address")
|
||||||
|
target_link_libraries(rw_interface INTERFACE "-fsanitize=address")
|
||||||
|
elseif(${SAN} STREQUAL "leak")
|
||||||
|
message(STATUS "Leak sanitizer enabled.")
|
||||||
|
target_compile_options(rw_interface INTERFACE "-fsanitize=leak")
|
||||||
|
target_link_libraries(rw_interface INTERFACE "-fsanitize=leak")
|
||||||
|
elseif(${SAN} STREQUAL "thread" )
|
||||||
|
message(STATUS "Thread sanitizer enabled.")
|
||||||
|
target_compile_options(rw_interface INTERFACE "-fsanitize=thread")
|
||||||
|
target_link_libraries(rw_interface INTERFACE "-fsanitize=thread")
|
||||||
|
elseif(${SAN} STREQUAL "undefined" )
|
||||||
|
message(STATUS "Undefined behaviour sanitizer enabled.")
|
||||||
|
target_compile_options(rw_interface INTERFACE "-fsanitize=undefined")
|
||||||
|
target_link_libraries(rw_interface INTERFACE "-fsanitize=undefined")
|
||||||
|
elseif(NOT ${SAN} STREQUAL "none" )
|
||||||
|
message(FATAL_ERROR "Illegal sanitizer")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
include(CMakeParseArguments)
|
include(CMakeParseArguments)
|
||||||
|
|
||||||
if(CHECK_INCLUDES)
|
if(CHECK_INCLUDES)
|
||||||
|
@ -25,3 +25,5 @@ option(CHECK_INCLUDES "Analyze #includes in C and C++ source files")
|
|||||||
|
|
||||||
option(TEST_COVERAGE "Enable coverage analysis (implies CMAKE_BUILD_TYPE=Debug)")
|
option(TEST_COVERAGE "Enable coverage analysis (implies CMAKE_BUILD_TYPE=Debug)")
|
||||||
option(SEPARATE_TEST_SUITES "Add each test suite as separate test to CTest")
|
option(SEPARATE_TEST_SUITES "Add each test suite as separate test to CTest")
|
||||||
|
|
||||||
|
option(ENABLE_SANITIZERS "Enable selected sanitizer.")
|
||||||
|
@ -16,6 +16,7 @@ RUN dnf update -y \
|
|||||||
glm-devel \
|
glm-devel \
|
||||||
openal-soft-devel \
|
openal-soft-devel \
|
||||||
SDL2-devel \
|
SDL2-devel \
|
||||||
qt5-devel
|
qt5-devel \
|
||||||
|
libasan
|
||||||
|
|
||||||
CMD ["/bin/bash"]
|
CMD ["/bin/bash"]
|
||||||
|
Loading…
Reference in New Issue
Block a user