diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cfd48cc..f759f762 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,7 @@ message("*") option(USE_LIBCPP "Use libc++ by adding -stdlib=libc++ flag if availbale." ON) option(USE_ASAN "Use address sanitizer by adding -fsanitize=address -fno-omit-frame-pointer flags" OFF) +option(USE_UBSAN "Use address sanitizer by adding -fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer flags" OFF) option(BUILD_UVW_LIBS "Prepare targets for static and shared libraries rather than for a header-only library." OFF) # @@ -112,7 +113,12 @@ else() if(USE_ASAN) target_compile_options(uvw INTERFACE $<$:-fsanitize=address -fno-omit-frame-pointer>) - target_link_libraries(uvw INTERFACE $<$:-fsanitize=address -fno-omit-frame-pointer>) + target_link_libraries(uvw INTERFACE $<$:-fsanitize=address>) + endif() + + if(USE_UBSAN) + target_compile_options(uvw INTERFACE $<$:-fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer>) + target_link_libraries(uvw INTERFACE $<$:-fsanitize=undefined>) endif() if(HAS_LIBCPP) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6ee93d2e..25e6c12a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -44,7 +44,12 @@ function(add_uvw_library LIB_NAME) if(USE_ASAN) target_compile_options(${LIB_NAME} PUBLIC $<$:-fsanitize=address -fno-omit-frame-pointer>) - target_link_libraries(${LIB_NAME} PUBLIC $<$:-fsanitize=address -fno-omit-frame-pointer>) + target_link_libraries(${LIB_NAME} PUBLIC $<$:-fsanitize=address>) + endif() + + if(USE_UBSAN) + target_compile_options(${LIB_NAME} PUBLIC $<$:-fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer>) + target_link_libraries(${LIB_NAME} PUBLIC $<$:-fsanitize=undefined>) endif() if(HAS_LIBCPP)