From 681b8e3233ced3dce0124176e790e72233d9ef4e Mon Sep 17 00:00:00 2001 From: Max Regan Date: Fri, 7 Apr 2017 15:51:54 -0700 Subject: [PATCH] make: clean up coverage builds Clean up the coverage build output, and add a "config" target for doing a coverage build. Signed-off-by: Max Regan --- Makefile | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 24792ae..cedd59c 100755 --- a/Makefile +++ b/Makefile @@ -17,9 +17,13 @@ CONFIG = $(OUT)/.config.mk ifeq ($(DEBUG), 1) CCFLAGS += -DLOG_LEVEL=5 -DDEBUG -CCFLAGS += -fprofile-arcs -ftest-coverage CCFLAGS += -O0 -ggdb +endif + +ifeq ($(COVERAGE), 1) LDFLAGS += -lgcov --coverage +CCFLAGS += -O0 --coverage +CCFLAGS += -fprofile-arcs -ftest-coverage endif ifeq ($(RELEASE), 1) @@ -38,17 +42,23 @@ APPS = $(patsubst %.o, %, $(APP_OBJS)) .PHONY: all all: gbdb gbasm tests -.PHONY: config-debug config-release config-default +.PHONY: config-debug config-release config-default config-coverage + $(CONFIG): @mkdir -p $(OUT) + config-debug: $(CONFIG) @echo "DEBUG=1" > $(CONFIG) + config-release: $(CONFIG) @echo "RELEASE=1" > $(CONFIG) + +config-coverage: $(CONFIG) + @echo "COVERAGE=1" > $(CONFIG) + config-default: $(CONFIG) @echo "" > $(CONFIG) - .PHONY: gbdb gbasm gbdb: $(OUT)/apps/gbdb @@ -56,19 +66,19 @@ gbasm: $(OUT)/apps/gbasm .PHONY: gbasm-test sample-test tests -TESTS=$(OUT)/apps/gbasm-test $(OUT)/apps/tri-test +TESTS=$(OUT)/apps/gbasm_test $(OUT)/apps/tri_test $(OUT)/apps/cpu_integ_test tests: $(TESTS) $(ALL_APPS) $(ALL_OBJS): $(CONFIG) $(OUT)/%.o: $(SRC_DIR)/%.c - @echo " CC $@" + @echo " CC $@" @$(shell mkdir -p $(@D)) @$(CC) -c $(CCFLAGS) -o $@ $< .SECONDEXPANSION: $(APPS): $(OBJS) $$@.o - @echo " LD $@" + @echo " LD $@" @$(shell mkdir -p $(@D)) @$(CC) $^ $(LDFLAGS) -o $@ @@ -77,6 +87,7 @@ $(APPS): $(OBJS) $$@.o define run_tests = @for i in $(TESTS); do \ + echo " TEST $$i"; \ $$i; \ if [ $$? -ne 0 ]; then \ exit 1; \ @@ -85,37 +96,36 @@ define run_tests = endef .PHONY: check coverage coverage-report - check: $(TESTS) $(run_tests) - COV_BASE=$(COV_DIR)/cov_base.info .PHONY: $(COV_BASE) - - $(COV_BASE): @mkdir -p $(COV_DIR) - @lcov -c -i -d $(OUT) -o $(COV_BASE) + @lcov -q -c -i -d $(OUT) -o $(COV_BASE) $(COV_DIR)/coverage.info coverage: $(TESTS) $(COV_BASE) @for test in $(TESTS); do \ - $$test; \ - lcov -c -d $(OUT) -o $(COV_DIR)/$$(basename $$test).info -t $$(basename $$test); \ + echo " TEST $$test"; \ + $$test -q; \ + echo " LCOV $$(basename $$test)"; \ + lcov -q -c -d $(OUT) -o $(COV_DIR)$$(basename $$test).info -t $$(basename $$test); \ done - lcov $$(for i in $$(ls -1 $(COV_DIR)/*.info); do echo "-a $$i"; done) -o $(COV_DIR)/coverage.info + @lcov -q $$(for i in $$(ls -1 $(COV_DIR)*.info); do echo "-a $$i"; done) -o $(COV_DIR)coverage.info coverage-report: coverage @mkdir -p $(COV_DIR)/html/ - @genhtml --prefix $(PWD) --output-directory=$(COV_DIR)/html $(COV_DIR)/coverage.info + @genhtml -q --prefix $(PWD) --output-directory=$(COV_DIR)/html $(COV_DIR)/coverage.info .PHONY: clean realclean cov-clean + cov-clean: @find $(OUT)/ \( -iname *.gcno -o -iname *.gcda \) -delete - @rm + @rm -rf $(COV_DIR) -clean: - @rm -f $(ALL_OBJS) $(APPS) +clean: cov-clean + @rm -f $(ALL_OBJS) $(APPS) $(TESTS) realclean: clean @rm -f $(CONFIG)