
#
# LCOV
#

lcov: lcov-html

lcov-test: all
	@echo "Running test suite"
	@find . -name \*.gcda -o -name \*.da -o -name \*.bbg? | xargs rm -f
	-@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
		NO_INTERACTION=1 \
		TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
		TEST_PHP_SRCDIR=$(top_srcdir) \
		CC="$(CC)" \
			$(PHP_EXECUTABLE) -d 'open_basedir=' -d 'safe_mode=0' -d 'output_buffering=0' -d 'memory_limit=-1' $(top_srcdir)/run-tests.php -d 'extension_dir=modules/' -d `( . $(PHP_MODULES) ; echo extension=$$dlname)` tests/; \
	elif test ! -z "$(SAPI_CLI_PATH)" && test -x "$(SAPI_CLI_PATH)"; then \
		NO_INTERACTION=1 \
		TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \
		TEST_PHP_SRCDIR=$(top_srcdir) \
		CC="$(CC)" \
			$(top_builddir)/$(SAPI_CLI_PATH) -d 'open_basedir=' -d 'safe_mode=0' -d 'output_buffering=0' -d 'memory_limit=-1' $(top_srcdir)/run-tests.php $(TESTS); \
	else \
		echo "ERROR: Cannot run tests without CLI sapi."; \
	fi

php_lcov.info: lcov-test
	@echo "Generating data for $@"
	@rm -rf lcov_data/
	@$(mkinstalldirs) lcov_data/
	@echo
	-@find . -name \*.gcda -o -name \*.gcno -o -name \*.da -o -name \*.h | sed -e 's/^\.\///' | sed -e 's/\.gcda//g' -e 's/\.gcno//g' -e 's/\.da//g' | uniq | while read x; do \
		echo -n . ;\
		y=`echo $$x | sed -e 's!\.libs/!!'`; \
		dir=lcov_data/`dirname $$x`; \
		test -d "$$dir" || $(mkinstalldirs) "$$dir"; \
		if test -f "$(top_srcdir)/$$y.c"; then \
			ln -f -s $(top_srcdir)/$$y.c lcov_data/$$y.c; \
		fi; \
		if test -f "$(top_srcdir)/$$y.h"; then \
			ln -f -s $(top_srcdir)/$$y.h lcov_data/$$y.h; \
		fi; \
		if test -f "$(top_srcdir)/$$y.re"; then \
			ln -f -s $(top_srcdir)/$$y.re lcov_data/$$y.re; \
		fi; \
		if test -f "$(top_srcdir)/$$y.y"; then \
		        ln -f -s $(top_srcdir)/$$y.y lcov_data/$$y.y; \
		fi; \
		if test -f "$(top_srcdir)/$$y.l"; then \
		        ln -f -s $(top_srcdir)/$$y.l lcov_data/$$y.l; \
		fi; \
		if test -f "$(top_srcdir)/$$y"; then \
		        ln -f -s $(top_srcdir)/$$y lcov_data/$$y; \
		fi; \
		if test -f "$(top_builddir)/$$y.c"; then \
			ln -f -s $(top_builddir)/$$y.c lcov_data/$$y.c; \
		fi; \
		test -f "$$x.gcno" && cp $$x.gcno lcov_data/$$y.gcno ; \
		test -f "$$x.gcda" && cp $$x.gcda lcov_data/$$y.gcda ; \
		test -f "$$x.da"   && cp $$x.da   lcov_data/$$y.da ; \
		test -f "$$x.bb"   && cp $$x.bb   lcov_data/$$y.bb ; \
		test -f "$$x.bbg"  && cp $$x.bbg  lcov_data/$$y.bbg ; \
	done
	@echo 
	@echo "Generating $@"
	@$(LTP) --directory lcov_data/ --capture --base-directory=lcov_data --output-file $@

lcov-html: php_lcov.info
	@echo "Generating lcov HTML"
	@$(LTP_GENHTML) --legend --output-directory lcov_html/ --title "PHP Code Coverage" php_lcov.info

lcov-clean:
	rm -f php_lcov.info
	rm -rf lcov_data/
	rm -rf lcov_html/

