Add ExprTk_USE_SANITiZER and ExprTk_SANITIZER to use sanitizers

This commit is contained in:
Spiros Tsalikis 2023-02-25 15:45:11 -05:00
parent 33e5338e65
commit 666798fba3
1 changed files with 18 additions and 0 deletions

View File

@ -36,6 +36,24 @@ include(GitDetermineVersion)
# ExprTk_VERSION_PATCH, ExprTk_VERSION_PATCH_EXTRA, ExprTk_VERSION_FULL
determine_version("${CMAKE_CURRENT_SOURCE_DIR}" "${GIT_EXECUTABLE}" "ExprTk")
# create an ExprTk option for building the library with a sanitizer
option(ExprTk_USE_SANITiZER "Use a sanitizer. The sanitizer is specified by ExprTk_SANITIZER" OFF)
# define the requested sanitizer
set(ExprTk_SANITIZER "" CACHE STRING "The sanitizer options are: ASAN, MSAN, LSAN, USAN")
if (ExprTk_USE_SANITiZER)
if (ExprTk_SANITIZER STREQUAL "ASAN")
add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
elseif (ExprTk_SANITIZER STREQUAL "MSAN")
add_compile_options(-fsanitize=memory -fno-omit-frame-pointer)
elseif (ExprTk_SANITIZER STREQUAL "LSAN")
add_compile_options(-fsanitize=leak -fno-omit-frame-pointer)
elseif (ExprTk_SANITIZER STREQUAL "USAN")
add_compile_options(-fsanitize=undefined -fno-omit-frame-pointer)
else ()
message(FATAL_ERROR "The sanitizer options are: ASAN, MSAN, LSAN, USAN")
endif ()
endif ()
# create an interface library for the ExprTk header
add_library(ExprTk INTERFACE)
# set the include directory for the interface library