Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
6eb8beda28d682cc469c45b3c8e4a2ba1def519d
[simgrid.git] / tools / cmake / Modules / FindValgrind.cmake
1 find_program(VALGRIND_EXE
2   NAME valgrind
3   PATH_SUFFIXES bin/
4   PATHS
5   /opt
6   /opt/local
7   /opt/csw
8   /sw
9   /usr
10   )
11
12 if(VALGRIND_EXE)
13   message(STATUS "Found valgrind: ${VALGRIND_EXE}")
14   set (TESH_OPTION ${TESH_OPTION} --setenv VALGRIND_COMMAND=${CMAKE_HOME_DIRECTORY}/tools/cmake/scripts/my_valgrind.pl)
15 endif()
16
17 if(enable_memcheck_xml)
18   SET(VALGRIND_EXTRA_COMMAND_OPTIONS "--xml=yes --xml-file=memcheck_test_%p.memcheck --child-silent-after-fork=yes")
19 endif()
20
21 if(VALGRIND_EXE)
22   execute_process(COMMAND ${VALGRIND_EXE} --version  OUTPUT_VARIABLE "VALGRIND_VERSION")
23   string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" NEW_VALGRIND_VERSION "${VALGRIND_VERSION}")
24   if(NEW_VALGRIND_VERSION)
25     message(STATUS "Valgrind version: ${NEW_VALGRIND_VERSION}")
26     set (TESH_OPTION ${TESH_OPTION} --setenv VALGRIND_OPTIONS="--trace-children=yes --trace-children-skip=/usr/bin/*,/bin/* --leak-check=full --show-reachable=yes --track-origins=no --read-var-info=no --num-callers=20 --suppressions=${CMAKE_HOME_DIRECTORY}/tools/simgrid.supp ${VALGRIND_EXTRA_COMMAND_OPTIONS}" )
27     message(STATUS "Valgrind options: ${TESH_OPTION}")
28   else()
29     set(enable_memcheck false)
30     message(STATUS "Error: Command valgrind not found --> enable_memcheck autoset to false.")
31   endif()
32 else()
33   set(enable_memcheck false)
34   message(FATAL_ERROR "Command valgrind not found --> enable_memcheck autoset to false.")
35 endif()
36
37 mark_as_advanced(VALGRIND_EXE)