cmake/valgrind.cmake (27 lines of code) (raw):
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
if(FWE_VALGRIND)
find_program(VALGRIND_COMMAND valgrind)
if(NOT VALGRIND_COMMAND)
message(FATAL_ERROR "valgrind is not installed")
endif()
set(VALGRIND_FULL_COMMAND ${VALGRIND_COMMAND} --error-exitcode=1 --max-threads=2000 --leak-check=full --show-leak-kinds=all --gen-suppressions=all --suppressions=${CMAKE_CURRENT_SOURCE_DIR}/test/unit/support/valgrind.supp)
endif()
function(add_valgrind_tests)
if(FWE_VALGRIND)
foreach(BINARY ${ARGN})
set(TEST_NAME valgrind_${BINARY})
add_test(NAME ${TEST_NAME}
COMMAND ${VALGRIND_FULL_COMMAND} ./${BINARY} --gtest_output=xml:report-${TEST_NAME}.xml)
endforeach()
endif()
endfunction()
function(add_parallel_valgrind_tests)
if(FWE_VALGRIND)
list(JOIN VALGRIND_FULL_COMMAND " " VALGRIND_FULL_COMMAND_AS_STRING)
foreach(BINARY ${ARGN})
set(TEST_NAME valgrind_${BINARY})
add_test(NAME ${TEST_NAME}
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tools/valgrind-unit-tests-parallel.sh --binary ${BINARY} --valgrind-command ${VALGRIND_FULL_COMMAND_AS_STRING})
endforeach()
endif()
endfunction()