X-Git-Url: https://secure.softndesign.org/git/?a=blobdiff_plain;f=makefile;fp=makefile;h=0f6cb9b1b02be3b3ee03908b2c414822757badce;hb=b449884c71c44fa636a94fbee4c2e6676cca709f;hp=674c73f9dd9180499a8f71c068e247a5bd672437;hpb=d2ff8478555f878bdeb7f77b00fb5c77dfe8d05b;p=calc.git diff --git a/makefile b/makefile index 674c73f..0f6cb9b 100644 --- a/makefile +++ b/makefile @@ -11,7 +11,7 @@ OFLAGS = -O4 -Os #OFLAGS += -malign-double CFLAGS += -W -Wall -Wextra -g CFLAGS += -std=c99 -D_XOPEN_SOURCE=500 -CFLAGS += $(OFLAGS) $(INCLUDES) +CFLAGS += $(OFLAGS) $(INCLUDES) $(GCOVER) LDFLAGS += -g # Targets @@ -43,8 +43,6 @@ VALID = $(call TITLE, $(1)) && $(2) && $(call PASS, SUCCESS) || { $(call FAIL, F all: depends $(MAKE) $(ALLEXE:%=%.exe) -depends: $(patsubst %.c, %.d, $(wildcard *.c)) $(patsubst %, %.ld, $(ALLEXE)) - count: wc $(wildcard *.c *.h) $(MAKEFILE_LIST) @@ -54,20 +52,34 @@ clean: rm -f clean $(wildcard *.d *.ld *.log *.o *.test *~ .exec_*) $(call PASS, SUCCESS) +depends: $(patsubst %.c, %.d, $(wildcard *.c)) $(patsubst %, %.ld, $(ALLEXE)) + +gcovs: + $(MAKE) $(addprefix gcov_,$(ALLEXE)) + purge: clean $(call TITLE, "Purging") touch purge - rm -f purge $(ALLEXE) $(shell [ -f .targets ] && { cat .targets | sort | uniq; echo .targets; }) + rm -f purge $(ALLEXE:%=%.exe) $(shell [ -f .targets ] && { cat .targets | sort | uniq; echo .targets; }) $(call PASS, SUCCESS) tests: all - $(MAKE) $(addprefix test_,$(ALLEXE:%.exe=%)) + $(MAKE) $(addprefix test_,$(ALLEXE)) ## Main rules include $(wildcard *.d) include $(wildcard *.ld) +gcov_%: + make purge + CFLAGS="-fprofile-arcs -ftest-coverage" LDFLAGS="-fprofile-arcs -ftest-coverage" make + make test_$(@:gcov_%=%) + gcov `sed -e 's/\.exe:/.c/;s/\.o/.c/g' $(@:gcov_%=%.ld)` + touch gcov + rm -f gcov $(wildcard *.gcda *.gcno) + make purge + %.test: %.c $(call TITLE, "Building $@") # awk '/\/\* *test:.*\*\// { sub(/^.*\/\* *test: */, ""); sub(/ *\*\/.*$$/, ""); print }' $< > $@ @@ -114,7 +126,7 @@ valgrind_%: % ## Phony -.PHONY: clean count purge +.PHONY: all clean count depends gcovs purge tests ## Precious