Add an 'lcov' target for HTML coverage report
diff --git a/.gitignore b/.gitignore
index 07374ec..02b0a98 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
 CTestTestfile.cmake
 cmake_install.cmake
 Testing
+Coverage
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c3ae81d..a4b012c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,6 +74,12 @@
     COMMAND tests/scripts/test-ref-configs.pl
     )
 
+ADD_CUSTOM_TARGET(lcov
+    COMMAND geninfo *.gcda
+    COMMAND genhtml -o ../../../Coverage *.info
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/library/CMakeFiles/polarssl.dir
+    )
+
 ADD_CUSTOM_TARGET(memcheck
     COMMAND ctest -O memcheck.log -D ExperimentalMemCheck
     COMMAND tail -n1 memcheck.log | grep 'Memory checking results:' > /dev/null
diff --git a/Makefile b/Makefile
index 1a1082a..2ca3cf5 100644
--- a/Makefile
+++ b/Makefile
@@ -48,6 +48,7 @@
 	cd library  && $(MAKE) clean && cd ..
 	cd programs && $(MAKE) clean && cd ..
 	cd tests    && $(MAKE) clean && cd ..
+	find . \( -name \*.gcno -o -name \*.gcda -o -name *.info \) -exec rm {} +
 
 check: lib
 	( cd tests && $(MAKE) && $(MAKE) check )
@@ -55,6 +56,11 @@
 test-ref-configs:
 	tests/scripts/test-ref-configs.pl
 
+lcov:
+	rm -rf Coverage
+	( cd library && geninfo *.gcda )
+	( cd library && genhtml -o ../Coverage *.info )
+
 apidoc:
 	mkdir -p apidoc
 	doxygen doxygen/polarssl.doxyfile