From 4780e5326f3ec858252f0ef3b8bb779dbf37b4fe Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Sat, 3 Aug 2013 00:05:05 +0200 Subject: Integrate gcov support into Qt build system. To instrument a Qt application or library with the gcov coverage tool, do `CONFIG+=gcov' in the application .pro file. To instrument Qt itself with gcov, use the `-gcov' configure option. Change-Id: If24e91d95318609b0df1a76ed6d679bd92bcaab2 Reviewed-by: Oswald Buddenhagen Reviewed-by: Frederik Gladhorn --- .gitignore | 2 ++ configure | 6 ++++++ mkspecs/features/gcov.prf | 31 +++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 mkspecs/features/gcov.prf diff --git a/.gitignore b/.gitignore index 936570e416..66fb99d402 100644 --- a/.gitignore +++ b/.gitignore @@ -61,6 +61,8 @@ Makefile* *.pro.user* *.qmlproject.user* *.gcov +*.gcda +*.gcno bin/Qt*.dll bin/assistant* bin/designer* diff --git a/configure b/configure index cc8db47190..a59fd990e2 100755 --- a/configure +++ b/configure @@ -1518,6 +1518,11 @@ while [ "$#" -gt 0 ]; do QTCONFIG_CONFIG="$QTCONFIG_CONFIG testcocoon" fi ;; + gcov) + if [ "$VAL" = "yes" ]; then + QTCONFIG_CONFIG="$QTCONFIG_CONFIG gcov" + fi + ;; platform) PLATFORM="$VAL" # keep compatibility with old platform names @@ -3438,6 +3443,7 @@ Configure options: -qtlibinfix Renames all libQt*.so to libQt*.so. -testcocoon ........ Instrument Qt with the TestCocoon code coverage tool. + -gcov .............. Instrument Qt with the GCov code coverage tool. -D ........ Add an explicit define to the preprocessor. -I ........ Add an explicit include path. diff --git a/mkspecs/features/gcov.prf b/mkspecs/features/gcov.prf new file mode 100644 index 0000000000..330831fc0e --- /dev/null +++ b/mkspecs/features/gcov.prf @@ -0,0 +1,31 @@ +# +# Tested with gcov 4.8.1 +# http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Gcov.html + +# To instrument a Qt application or library with the gcov coverage +# tool, do `CONFIG+=gcov' in the application .pro file. +# +# To instrument Qt itself with gcov, use the `-gcov' configure +# option. + +# The .gcno file is generated when the source file is compiled. +# The .gcda file is generated when a program is executed. + +# Example how to generate the html output after you've run the program or test +# +# lcov --capture --directory . --output-file coverage-gcov.info --no-external +# lcov --output-file coverage-gcov.info --remove coverage-gcov.info '*.moc*' '.*rcc*' '*3rdparty*' +# genhtml coverage-gcov.info --output-directory doc/coverage + +# If you want to use gcov directly, you most likely need to manually move the .gcda and .gcno files +# along with the program. +# +# mv .obj/debug-shared/tst_example.gc* . +# gcov -b -c tst_example.cpp + +QMAKE_CFLAGS += -fprofile-arcs -ftest-coverage +QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage +QMAKE_OBJECTIVE_CFLAGS += -fprofile-arcs -ftest-coverage +QMAKE_LFLAGS += -fprofile-arcs -ftest-coverage + +QMAKE_CLEAN += $(OBJECTS_DIR)*.gcno and $(OBJECTS_DIR)*.gcda -- cgit v1.2.3