This patch adds a parser make variable and a make target for building
the compiler with coverage compilation flags. With this, coverage
information can be generated by running tests/test suites against the
built parser and run through tools like gcovr.

Patch History:
  v1: initial version
  v2: refreshed/no change
  v3: address feedback from sarnold:
      - mark coverage target as phony
      - correct missing '.' typo in clean target
      - make coverage extensions consistent in clean targets

Signed-off-by: Steve Beattie <[email protected]>
---
 parser/Makefile                |    9 ++++++++-
 parser/libapparmor_re/Makefile |    2 +-
 parser/tst/Makefile            |    1 +
 3 files changed, 10 insertions(+), 2 deletions(-)

Index: b/parser/Makefile
===================================================================
--- a/parser/Makefile
+++ b/parser/Makefile
@@ -51,6 +51,9 @@ CFLAGS        = -g -O2 -pipe
 ifdef DEBUG
 CFLAGS += -pg -D DEBUG
 endif
+ifdef COVERAGE
+CFLAGS = -g -pg -fprofile-arcs -ftest-coverage
+endif
 endif #CFLAGS
 
 LIBAPPARMOR_PATH=../libraries/libapparmor/src/
@@ -149,6 +152,9 @@ indep: docs
 
 all:   arch indep
 
+.PHONY: coverage
+coverage:
+       $(MAKE) clean apparmor_parser COVERAGE=1
 
 apparmor_parser: $(OBJECTS) $(AAREOBJECTS)
        $(CXX) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ $(OBJECTS) $(LIBS) \
@@ -302,7 +308,8 @@ install-indep:
 .SILENT: clean
 .PHONY: clean
 clean: _clean
-       rm -f core core.* *.o *.s *.a *~
+       rm -f core core.* *.o *.s *.a *~ *.gcda *.gcno
+       rm -f gmon.out
        rm -f $(TOOLS) $(TESTS)
        rm -f $(LEX_C_FILES)
        rm -f $(YACC_C_FILES)
Index: b/parser/libapparmor_re/Makefile
===================================================================
--- a/parser/libapparmor_re/Makefile
+++ b/parser/libapparmor_re/Makefile
@@ -29,4 +29,4 @@ parse.cc : parse.y parse.h flex-tables.h
        ${BISON} -o $@ $<
 
 clean:
-       rm -f *.o parse.cc ${TARGET}
+       rm -f *.o parse.cc ${TARGET} *.gcda *.gcno
Index: b/parser/tst/Makefile
===================================================================
--- a/parser/tst/Makefile
+++ b/parser/tst/Makefile
@@ -59,3 +59,4 @@ $(PARSER):
 
 clean:
        find $(GEN_TRANS_DIRS) -type f | xargs rm -f
+       rm -f gmon.out


-- 
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to