if(FWE_VALGRIND)
  find_program(VALGRIND_COMMAND valgrind)
  if(NOT VALGRIND_COMMAND)
    message(FATAL_ERROR "valgrind is not installed")
  endif()
endif()

function(add_valgrind_test BINARY)
  if(FWE_VALGRIND)
    set(VALGRIND_OPTIONS --error-exitcode=1 --leak-check=full --show-leak-kinds=all --gen-suppressions=all)
    if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/test/valgrind.supp)
      set(VALGRIND_OPTIONS --suppressions=${CMAKE_CURRENT_SOURCE_DIR}/test/valgrind.supp ${VALGRIND_OPTIONS})
    endif()
    if((${ARGC} GREATER 1) AND (EXISTS ${ARGV1}))
      set(VALGRIND_OPTIONS --suppressions=${ARGV1} ${VALGRIND_OPTIONS})
    endif()
    add_test(NAME valgrind_${BINARY}
      COMMAND ${VALGRIND_COMMAND} ${VALGRIND_OPTIONS} ./${BINARY} ${ARGN})
  endif()
endfunction()