add '-shared-libasan' to debug flags (bug #5533)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5d244f7..5757388 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2312,20 +2312,22 @@ if(SDL_STATIC)
endif()
endif()
-macro(asan_check_add_debug_flag ASAN_FLAG)
- set(FLAG "-fsanitize=${ASAN_FLAG}")
-
- check_c_compiler_flag(${FLAG} HAS_C_FLAG_${ASAN_FLAG})
- if (HAS_C_FLAG_${ASAN_FLAG})
+macro(check_add_debug_flag FLAG SUFFIX)
+ check_c_compiler_flag(${FLAG} HAS_C_FLAG_${SUFFIX})
+ if (HAS_C_FLAG_${SUFFIX})
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${FLAG}")
endif()
- check_cxx_compiler_flag("${FLAG}" HAS_CXX_${ASAN_FLAG})
- if (HAS_CXX_${ASAN_FLAG})
+ check_cxx_compiler_flag(${FLAG} HAS_CXX_${SUFFIX})
+ if (HAS_CXX_${SUFFIX})
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${FLAG}")
endif()
endmacro()
+macro(asan_check_add_debug_flag ASAN_FLAG)
+ check_add_debug_flag("-fsanitize=${ASAN_FLAG}" "${ASAN_FLAG}")
+endmacro()
+
macro(asan_check_add_debug_flag2 ASAN_FLAG)
# for some sanitize flags we have to manipulate the CMAKE_REQUIRED_LIBRARIES:
# http://cmake.3232098.n2.nabble.com/CHECK-CXX-COMPILER-FLAG-doesn-t-give-correct-result-for-fsanitize-address-tp7600216p7600217.html
@@ -2348,6 +2350,7 @@ macro(asan_check_add_debug_flag2 ASAN_FLAG)
endmacro()
# enable AddressSanitizer if supported
+check_add_debug_flag("-shared-libasan" "shared_libasan")
asan_check_add_debug_flag2("address")
asan_check_add_debug_flag("bool")
asan_check_add_debug_flag("bounds")