WORKDIR=target TARGET=$(WORKDIR)/main OBJS=$(patsubst src/%.c,$(WORKDIR)/%.o,$(wildcard src/*.c)) CC=gcc CFLAGS=-coverage -Wall -Wextra LDFLAGS=-coverage LCOVFLAGS=-d $(WORKDIR) --rc lcov_branch_coverage=1 all: $(TARGET) .PHONY: all clean: $(RM) -r $(WORKDIR) .PHONY: clean $(WORKDIR)/%.o: src/%.c | $(WORKDIR)/ $(CC) $(CFLAGS) -c $< -o $@ $(WORKDIR)/main: $(OBJS) | $(WORKDIR)/ $(CC) $(LDFLAGS) $^ -o $@ lcov: report.info report_checksum.info report.info: LCOVFLAGS+= report_checksum.info: LCOVFLAGS+= --checksum %.info: LCOVINIT=$(patsubst %.info,%.init.info,$@) %.info: LCOVRUN=$(patsubst %.info,%.run.info,$@) %.info: $(TARGET) lcov $(LCOVFLAGS) -z lcov $(LCOVFLAGS) -c -i -o $(LCOVINIT) ./$(TARGET) lcov $(LCOVFLAGS) -c -o $(LCOVRUN) lcov $(LCOVFLAGS) -a $(LCOVINIT) -a $(LCOVRUN) -o $@ %/: mkdir -p $@