john Wed Oct 19 20:18:26 2005 EDT Added files: /php-src Makefile.gcov gen_php_cov
Modified files: /php-src NEWS configure.in Log: Implementing C-level Code coverage (--enable-gcov). o Requires LTP 1.4+ and libgcov http://cvs.php.net/diff.php/php-src/NEWS?r1=1.2070&r2=1.2071&ty=u Index: php-src/NEWS diff -u php-src/NEWS:1.2070 php-src/NEWS:1.2071 --- php-src/NEWS:1.2070 Sat Oct 15 08:54:18 2005 +++ php-src/NEWS Wed Oct 19 20:18:23 2005 @@ -1,6 +1,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 6.0 +- C-level Code Coverage Instrumenting (John) - Unicode support. (Andrei, Dmitriy, et al) - Changed type hints so that they take "= NULL" as default value. (Marcus, Derick) http://cvs.php.net/diff.php/php-src/configure.in?r1=1.588&r2=1.589&ty=u Index: php-src/configure.in diff -u php-src/configure.in:1.588 php-src/configure.in:1.589 --- php-src/configure.in:1.588 Tue Sep 13 17:40:33 2005 +++ php-src/configure.in Wed Oct 19 20:18:23 2005 @@ -1,4 +1,4 @@ - ## $Id: configure.in,v 1.588 2005/09/13 21:40:33 sniper Exp $ -*- autoconf -*- + ## $Id: configure.in,v 1.589 2005/10/20 00:18:23 john Exp $ -*- autoconf -*- dnl ## Process this file with autoconf to produce a configure script. divert(1) @@ -597,6 +597,57 @@ PHP_CONFIGURE_PART(General settings) PHP_HELP_SEPARATOR([General settings:]) +PHP_ARG_ENABLE(gcov, whether to include gcov symbols, +[ --enable-gcov Enable GCOV code coverage (requires LTP)], no, no) + +if test "$PHP_GCOV" = "yes"; then + AC_DEFUN([PHP_PROG_LTP],[ + + ltp_version_list="1.4" + + AC_CHECK_PROG(LTP, lcov, lcov) + AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml) + if test "$LTP"; then + AC_CACHE_CHECK([for ltp version], php_cv_ltp_version, [ + php_cv_ltp_version=invalid + ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'` + for ltp_check_version in $ltp_version_list; do + if test "$ltp_version" = "$ltp_check_version"; then + php_cv_ltp_version="$ltp_check_version (ok)" + fi + done + ]) + else + ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list" + AC_MSG_ERROR([$ltp_msg]) + fi + + case $php_cv_ltp_version in + ""|invalid[)] + ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)." + AC_MSG_ERROR([$ltp_msg]) + LTP="exit 0;" + ;; + esac + + if test "$LTP_GENHTML" = ""; then + AC_MSG_ERROR([Could not find genhtml from the LTP package]) + fi + + PHP_SUBST(LTP) + PHP_SUBST(LTP_GENHTML) + ]) + + PHP_PROG_LTP + AC_CHECK_LIB(gcov, __gcov_open, [ + PHP_ADD_LIBRARY(gcov) + AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov]) + CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage" + PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/Makefile.gcov,$abs_srcdir) + ], [ + AC_MSG_ERROR([Problem with enabling gcov. Please check config.log for details.]) + ]) +fi PHP_ARG_ENABLE(debug, whether to include debugging symbols, [ --enable-debug Compile with debugging symbols], no, no) http://cvs.php.net/co.php/php-src/Makefile.gcov?r=1.1&p=1 Index: php-src/Makefile.gcov +++ php-src/Makefile.gcov .php_cov_info.ltpdata: @mkdir -p .cov/; \ find . -name \*.gcda -o -name \*.gcno | sed -e 's/^\.\/\.cov\/.*//' | xargs --replace cp {} .cov/; \ find . -name \*.gcda -o -name \*.gcno | sed -e 's/^\.\/\.cov\/.*//' | sed -e 's/^\.\///' | xargs --max-args=1 dirname | sed -e 's/\/.*//' | xargs --replace ln -s `pwd`/{} `pwd`/.cov > /dev/null 2>&1; \ $(LTP) --directory .cov --output-file=.php_cov_info.ltpdata --capture; \ cov: .php_cov_info.ltpdata cov-html: cov @$(LTP_GENHTML) -o cov_html/ .php_cov_info.ltpdata -t "PHP Code Coverage" -s; cov-clean: find . -name \*.gcda -o -name \*.gcno -exec rm -f {} \; rm -f .cov/* # This is done first, since we are symlinked inside.. rm -Rf .cov # Now remove the directory rm -f .php_cov_info.ltpdata rm -Rf cov_html -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php