From cbc9ec23b0fb551f20f4fd8ca46d98f59b5666bc Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 13 Apr 2014 21:40:35 +0200 Subject: compile with absolute paths to allow lcov use MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instructing gcc (or clang) to prepare for capturing coverage data is easy: Just build with: CXXFLAGS=--coverage The hard part is that our buildsystem uses relative paths and so confuses the hell out of lcov as it assumes this way that all our *.cc files are in the same directory… by changing to absolute paths in the compile rules we solve this problem. Still not perfect as it refers to build/include files for most headers and our forking/threading code isn't properly captured, but good enough to see red reports for now: CXXFLAGS=--coverage make make test ./test/integration/run-tests -q lcov --no-external --directory . --capture --output-file apt.info genhtml --output-directory ./coverage/ apt.info Git-Dch: Ignore --- buildlib/library.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'buildlib/library.mak') diff --git a/buildlib/library.mak b/buildlib/library.mak index ef1306b66..cc0286d7e 100644 --- a/buildlib/library.mak +++ b/buildlib/library.mak @@ -63,7 +63,7 @@ $(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR): $($(LOCAL)-HEADERS) $($(LOCAL)-OBJS) vpath %.cc $(SUBDIRS) $(OBJ)/%.opic: %.cc $(LIBRARYDEPENDS) echo Compiling $< to $@ - $(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) -o $@ $< + $(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) -o $@ $(abspath $<) $(DoDep) # Include the dependencies that are available -- cgit v1.2.3