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