@@ -337,14 +337,31 @@ endfunction()
337
337
if (SANITIZER_ENABLE_LEGACY_SUPPORT OR USE_SANITIZER)
338
338
set (SANITIZER_LEGACY_SUPPORT ON )
339
339
340
- set_sanitizer_options(address DEFAULT -fno-omit-frame-pointer)
341
- set_sanitizer_options(leak DEFAULT -fno-omit-frame-pointer)
342
- set_sanitizer_options(memory DEFAULT -fno-omit-frame-pointer)
343
- set_sanitizer_options(memorywithorigins DEFAULT SANITIZER memory
344
- -fno-omit-frame-pointer -fsanitize-memory-track-origins)
345
- set_sanitizer_options(undefined DEFAULT -fno-omit-frame-pointer)
346
- set_sanitizer_options(thread DEFAULT -fno-omit-frame-pointer)
347
- set_sanitizer_options(cfi DEFAULT -fno-omit-frame-pointer)
340
+ # The older variants used to add this flag, but since MSVC doesn't support it,
341
+ # do a check and add it only if available
342
+ set (QUIET_BACKUP ${CMAKE_REQUIRED_QUIET} )
343
+ set (CMAKE_REQUIRED_QUIET TRUE )
344
+ unset (SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS)
345
+ check_cxx_compiler_flag(-fno-omit-frame-pointer
346
+ SANITIZER_OMIT_FRAME_POINTER_AVAILABLE)
347
+ set (CMAKE_REQUIRED_QUIET "${QUIET_BACKUP} " )
348
+ if (SANITIZER_OMIT_FRAME_POINTER_AVAILABLE)
349
+ set (SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS -fno-omit-frame-pointer)
350
+ endif ()
351
+
352
+ set_sanitizer_options(address DEFAULT
353
+ ${SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS} )
354
+ set_sanitizer_options(leak DEFAULT ${SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS} )
355
+ set_sanitizer_options(memory DEFAULT
356
+ ${SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS} )
357
+ set_sanitizer_options(
358
+ memorywithorigins DEFAULT SANITIZER memory
359
+ ${SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS} -fsanitize-memory-track-origins)
360
+ set_sanitizer_options(undefined DEFAULT
361
+ ${SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS} )
362
+ set_sanitizer_options(thread DEFAULT
363
+ ${SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS} )
364
+ set_sanitizer_options(cfi DEFAULT ${SANITIZER_LEGACY_DEFAULT_COMMON_OPTIONS} )
348
365
349
366
set (USE_SANITIZER
350
367
""
0 commit comments