@@ -163,25 +163,9 @@ set(HAVE_EINSPLINE 1) # to be removed
163163option (QMC_EXP_THREADING "Experimental non openmp threading models" OFF )
164164mark_as_advanced (QMC_EXP_THREADING )
165165
166- #--------------------------------------------------------------------
167- # Sanitizer options
168- #--------------------------------------------------------------------
169-
170166# Add optional sanitizers ASAN, UBSAN, MSAN, TYPESAN
171167set (VALID_SANITIZERS "asan" "ubsan" "tsan" "msan" "typesan" )
172- set (ENABLE_SANITIZER "" CACHE STRING "asan,ubsan,tsan,msan,typesan" )
173- set_property (CACHE ENABLE_SANITIZER PROPERTY STRINGS ${VALID_SANITIZERS} )
174-
175- set (LSAN_OPTIONS "suppressions=${PROJECT_SOURCE_DIR} /config/sanitizers/lsan.supp" CACHE STRING "cached value of environment variable LSAN_OPTIONS used by ctest" )
176-
177- if (ENABLE_SANITIZER)
178- # Perform sanitizer option check, only works in debug mode
179- if (NOT ENABLE_SANITIZER IN_LIST VALID_SANITIZERS)
180- message (FATAL_ERROR "Invalid -DENABLE_SANITIZER=${ENABLE_SANITIZER} , value must be one of ${VALID_SANITIZERS} " )
181- else ()
182- message (STATUS "Enable sanitizer ENABLE_SANITIZER=${ENABLE_SANITIZER} " )
183- endif ()
184- endif ()
168+ set (ENABLE_SANITIZER "" CACHE STRING "Valid input: ${VALID_SANITIZERS} or left empty" )
185169
186170#--------------------------------------------------------------------
187171# INSTALL_NEXUS install Nexus alongside QMCPACK
@@ -261,6 +245,12 @@ include(TestCxx17Library)
261245# SETUP SANITIZERS FLAGS
262246#-----------------------------------------------------------------------
263247if (ENABLE_SANITIZER)
248+ message (STATUS "Enable sanitizer ENABLE_SANITIZER=${ENABLE_SANITIZER} " )
249+ # Perform sanitizer option check
250+ if (NOT ENABLE_SANITIZER IN_LIST VALID_SANITIZERS)
251+ message (FATAL_ERROR "Invalid ENABLE_SANITIZER input, value must be one of ${VALID_SANITIZERS} " )
252+ endif ()
253+
264254 if (NOT ${COMPILER} MATCHES "GNU" AND NOT ${COMPILER} MATCHES "Clang" )
265255 message (FATAL_ERROR "-DENABLE_SANITIZER=${ENABLE_SANITIZER} only works with GNU or Clang compilers" )
266256 endif ()
@@ -269,6 +259,16 @@ if(ENABLE_SANITIZER)
269259 set (CMAKE_CXX_FLAGS_SAN
270260 "-fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer"
271261 CACHE STRING "AddressSanitizer C++ compiler builds." FORCE )
262+ if (NOT DEFINED LSAN_OPTIONS)
263+ if (QMC_MPI)
264+ set (LSAN_OPTIONS "suppressions=${PROJECT_SOURCE_DIR} /config/sanitizers/lsan_mpi.supp" )
265+ else ()
266+ set (LSAN_OPTIONS "" )
267+ endif ()
268+ endif ()
269+ if (LSAN_OPTIONS)
270+ message (STATUS "Set environment variable LSAN_OPTIONS for CTest: ${LSAN_OPTIONS} " )
271+ endif ()
272272 elseif ("${ENABLE_SANITIZER} " STREQUAL "ubsan" )
273273 set (CMAKE_CXX_FLAGS_SAN
274274 "-fsanitize=undefined"
0 commit comments