_rules-coverage.mk 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. .PHONY: coverage lcov test
  2. ifneq (,$(COVERAGE_LIST))
  3. COVERAGE_PROGS := \(
  4. COVERAGE_PROGS += $(COVERAGE_LIST)
  5. COVERAGE_PROGS += \)
  6. COVERAGE_CMD := $(RULE_DIR)/scripts/exe_coverage_progs.sh
  7. endif
  8. ifeq (,$(COVERAGE_CMD))
  9. coverage lcov test:
  10. @echo "COVERAGE_CMD not defined, skip"
  11. else
  12. coverage lcov test: all $(UTEST_RECP)
  13. #
  14. # SKIP --coverage existing in $(CFLAGS) check for now
  15. #
  16. $(Q)rm -rf $(OUTPUT_DIR)/$(LCOV_DIR) $(DIST_DIR)/$(LCOV_DIR)
  17. $(Q)rm -f $(OUTPUT_DIR)/{files,tests,all,final}.info
  18. $(Q)find $(OUTPUT_DIR) -name "*.gcno" -o -name "*.gcda" -exec rm -f {} \;
  19. $(Q)OUTPUT_DIR=$(OUTPUT_DIR) bash <($(SED) '2iPROGS=$(COVERAGE_PROGS)' $(COVERAGE_CMD)) || true
  20. $(Q)lcov --quiet \
  21. --capture --initial --directory $(OUTPUT_DIR)/ \
  22. -o $(OUTPUT_DIR)/files.info
  23. $(Q)lcov --quiet \
  24. --capture --directory $(OUTPUT_DIR) \
  25. -o $(OUTPUT_DIR)/tests.info
  26. $(Q)lcov --quiet \
  27. --add-tracefile $(OUTPUT_DIR)/files.info \
  28. --add-tracefile $(OUTPUT_DIR)/tests.info \
  29. -o $(OUTPUT_DIR)/all.info
  30. $(Q)lcov --quiet \
  31. --remove $(OUTPUT_DIR)/all.info \
  32. -o $(OUTPUT_DIR)/final.info '*.h'
  33. $(Q)genhtml --quiet \
  34. --legend --no-branch-coverage -o $(OUTPUT_DIR)/$(LCOV_DIR) $(OUTPUT_DIR)/final.info
  35. $(Q)cp -rf $(OUTPUT_DIR)/$(LCOV_DIR) $(DIST_DIR)/$(LCOV_DIR)
  36. $(Q)cd $(DIST_DIR)/$(LCOV_DIR) && \
  37. $(SED) -i 's:\(coverFile.*\)>$(OUTPUT_DIR)/:\1>:g' index.html
  38. $(Q)bash $(RULE_DIR)/scripts/gen_lcov_report.sh $(DIST_DIR)/$(LCOV_DIR)
  39. endif