@@ -37,6 +37,7 @@ abs_builddir= @abs_builddir@
3737CC= @CC@
3838CXX= @CXX@
3939LINKCC= @LINKCC@
40+ CC_NAME=@CC_NAME@
4041AR= @AR@
4142READELF= @READELF@
4243SOABI= @SOABI@
@@ -656,9 +657,20 @@ bolt-opt: @PREBOLT_RULE@
656657 rm -f $(BUILDPYTHON).bolt_inst
657658 mv $(BUILDPYTHON).bolt $(BUILDPYTHON)
658659
660+ .PHONY=coverage-report
661+ coverage-report:
662+ @if [ $(CC_NAME) = "gcc" ]; then \
663+ $(MAKE) coverage-report-lcov; \
664+ elif [ $(CC_NAME) = "clang" ]; then \
665+ $(MAKE) coverage-report-llvm; \
666+ else \
667+ echo "Coverage is not supported with the $(CC_NAME) compiler"; \
668+ exit 1; \
669+ fi
670+
659671# Compile and run with gcov
660- .PHONY=coverage coverage-lcov coverage-report
661- coverage:
672+ .PHONY=coverage-gcc coverage-lcov coverage-report-lcov
673+ coverage-gcc :
662674 @echo "Building with support for coverage checking:"
663675 $(MAKE) clean
664676 $(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) -O0 -pg --coverage" LDFLAGS="$(LDFLAGS) --coverage"
@@ -694,7 +706,7 @@ coverage-lcov:
694706 @echo
695707
696708# Force regeneration of parser and frozen modules
697- coverage-report: regen-token regen-frozen
709+ coverage-report-lcov : regen-token regen-frozen
698710 @ # build with coverage info
699711 $(MAKE) coverage
700712 @ # run tests, ignore failures
@@ -703,14 +715,9 @@ coverage-report: regen-token regen-frozen
703715 $(MAKE) coverage-lcov
704716
705717# Compile and calculate coverage with llvm-cov
706- .PHONY=check-clang coverage-llvm coverage-profdata coverage-report-llvm
707-
708- # Check whether the compiler is clang, and if not, error out.
709- check-clang:
710- ($(CC) --version | grep clang) || \
711- (echo "LLVM coverage only works with clang. Set CC=clang and CXX=clang++ and re-run ./configure"; exit 1)
718+ .PHONY=coverage-clang coverage-profdata coverage-report-llvm
712719
713- coverage-llvm: check-clang
720+ coverage-clang:
714721 @echo "Building with support for coverage checking:"
715722 $(MAKE) clean
716723 @ # Override CC rather than CFLAGS since these flags must come first
@@ -734,7 +741,7 @@ coverage-profdata:
734741# into temporary directories created by tests.
735742coverage-report-llvm: regen-token regen-importlib
736743 @ # build with coverage info
737- $(MAKE) coverage-llvm
744+ $(MAKE) coverage-clang
738745 @ # run tests, ignore failures
739746 LLVM_PROFILE_FILE=${PWD}/python%m.profraw $(TESTRUNNER) $(TESTOPTS) || true
740747 @ # build llvm-cov report
0 commit comments