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 <mgregan2@gmail.com>
This commit is contained in:
42
Makefile
42
Makefile
@@ -17,9 +17,13 @@ CONFIG = $(OUT)/.config.mk
|
|||||||
|
|
||||||
ifeq ($(DEBUG), 1)
|
ifeq ($(DEBUG), 1)
|
||||||
CCFLAGS += -DLOG_LEVEL=5 -DDEBUG
|
CCFLAGS += -DLOG_LEVEL=5 -DDEBUG
|
||||||
CCFLAGS += -fprofile-arcs -ftest-coverage
|
|
||||||
CCFLAGS += -O0 -ggdb
|
CCFLAGS += -O0 -ggdb
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(COVERAGE), 1)
|
||||||
LDFLAGS += -lgcov --coverage
|
LDFLAGS += -lgcov --coverage
|
||||||
|
CCFLAGS += -O0 --coverage
|
||||||
|
CCFLAGS += -fprofile-arcs -ftest-coverage
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(RELEASE), 1)
|
ifeq ($(RELEASE), 1)
|
||||||
@@ -38,17 +42,23 @@ APPS = $(patsubst %.o, %, $(APP_OBJS))
|
|||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: gbdb gbasm tests
|
all: gbdb gbasm tests
|
||||||
|
|
||||||
.PHONY: config-debug config-release config-default
|
.PHONY: config-debug config-release config-default config-coverage
|
||||||
|
|
||||||
$(CONFIG):
|
$(CONFIG):
|
||||||
@mkdir -p $(OUT)
|
@mkdir -p $(OUT)
|
||||||
|
|
||||||
config-debug: $(CONFIG)
|
config-debug: $(CONFIG)
|
||||||
@echo "DEBUG=1" > $(CONFIG)
|
@echo "DEBUG=1" > $(CONFIG)
|
||||||
|
|
||||||
config-release: $(CONFIG)
|
config-release: $(CONFIG)
|
||||||
@echo "RELEASE=1" > $(CONFIG)
|
@echo "RELEASE=1" > $(CONFIG)
|
||||||
|
|
||||||
|
config-coverage: $(CONFIG)
|
||||||
|
@echo "COVERAGE=1" > $(CONFIG)
|
||||||
|
|
||||||
config-default: $(CONFIG)
|
config-default: $(CONFIG)
|
||||||
@echo "" > $(CONFIG)
|
@echo "" > $(CONFIG)
|
||||||
|
|
||||||
|
|
||||||
.PHONY: gbdb gbasm
|
.PHONY: gbdb gbasm
|
||||||
|
|
||||||
gbdb: $(OUT)/apps/gbdb
|
gbdb: $(OUT)/apps/gbdb
|
||||||
@@ -56,7 +66,7 @@ gbasm: $(OUT)/apps/gbasm
|
|||||||
|
|
||||||
.PHONY: gbasm-test sample-test tests
|
.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)
|
tests: $(TESTS)
|
||||||
|
|
||||||
$(ALL_APPS) $(ALL_OBJS): $(CONFIG)
|
$(ALL_APPS) $(ALL_OBJS): $(CONFIG)
|
||||||
@@ -77,6 +87,7 @@ $(APPS): $(OBJS) $$@.o
|
|||||||
|
|
||||||
define run_tests =
|
define run_tests =
|
||||||
@for i in $(TESTS); do \
|
@for i in $(TESTS); do \
|
||||||
|
echo " TEST $$i"; \
|
||||||
$$i; \
|
$$i; \
|
||||||
if [ $$? -ne 0 ]; then \
|
if [ $$? -ne 0 ]; then \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
@@ -85,37 +96,36 @@ define run_tests =
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
.PHONY: check coverage coverage-report
|
.PHONY: check coverage coverage-report
|
||||||
|
|
||||||
check: $(TESTS)
|
check: $(TESTS)
|
||||||
$(run_tests)
|
$(run_tests)
|
||||||
|
|
||||||
|
|
||||||
COV_BASE=$(COV_DIR)/cov_base.info
|
COV_BASE=$(COV_DIR)/cov_base.info
|
||||||
.PHONY: $(COV_BASE)
|
.PHONY: $(COV_BASE)
|
||||||
|
|
||||||
|
|
||||||
$(COV_BASE):
|
$(COV_BASE):
|
||||||
@mkdir -p $(COV_DIR)
|
@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)
|
$(COV_DIR)/coverage.info coverage: $(TESTS) $(COV_BASE)
|
||||||
@for test in $(TESTS); do \
|
@for test in $(TESTS); do \
|
||||||
$$test; \
|
echo " TEST $$test"; \
|
||||||
lcov -c -d $(OUT) -o $(COV_DIR)/$$(basename $$test).info -t $$(basename $$test); \
|
$$test -q; \
|
||||||
|
echo " LCOV $$(basename $$test)"; \
|
||||||
|
lcov -q -c -d $(OUT) -o $(COV_DIR)$$(basename $$test).info -t $$(basename $$test); \
|
||||||
done
|
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
|
coverage-report: coverage
|
||||||
@mkdir -p $(COV_DIR)/html/
|
@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
|
.PHONY: clean realclean cov-clean
|
||||||
|
|
||||||
cov-clean:
|
cov-clean:
|
||||||
@find $(OUT)/ \( -iname *.gcno -o -iname *.gcda \) -delete
|
@find $(OUT)/ \( -iname *.gcno -o -iname *.gcda \) -delete
|
||||||
@rm
|
@rm -rf $(COV_DIR)
|
||||||
|
|
||||||
clean:
|
clean: cov-clean
|
||||||
@rm -f $(ALL_OBJS) $(APPS)
|
@rm -f $(ALL_OBJS) $(APPS) $(TESTS)
|
||||||
|
|
||||||
realclean: clean
|
realclean: clean
|
||||||
@rm -f $(CONFIG)
|
@rm -f $(CONFIG)
|
||||||
|
|||||||
Reference in New Issue
Block a user