mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 12:45:26 -05:00
x1000-installer: add test & code coverage support to makefile
Pass COVERAGE=1 to enable clang-based code coverage and pass SANITIZE=1 to enable sanitizers. 'make cov' will run the test app and show a coverage summary. Change-Id: I8a33e8b78665165d8da1818dc01f495f0c52cf06
This commit is contained in:
parent
06423cab58
commit
7ca8623927
2 changed files with 51 additions and 7 deletions
2
lib/x1000-installer/.gitignore
vendored
2
lib/x1000-installer/.gitignore
vendored
|
|
@ -1,3 +1,5 @@
|
|||
xf_test
|
||||
fakeNAND.bin
|
||||
fakeNAND_meta.bin
|
||||
*.profraw
|
||||
*.profdata
|
||||
|
|
|
|||
|
|
@ -20,19 +20,61 @@ MTARINC = -I../microtar/src
|
|||
MTARLIB = ../microtar/libmicrotar.a
|
||||
|
||||
CPPFLAGS = -Iinclude -Itest_lib $(MTARINC) -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L
|
||||
CFLAGS = -std=c99 -Wall -Wextra -O2
|
||||
CFLAGS = -std=c99 -Wall -Wextra
|
||||
LDFLAGS =
|
||||
|
||||
PROFRAW_FILE=$(TBIN).profraw
|
||||
PROFDATA_FILE=$(TBIN).profdata
|
||||
|
||||
export LLVM_PROFILE_FILE=$(PROFRAW_FILE)
|
||||
|
||||
ifeq ($(COVERAGE),1)
|
||||
CC = clang
|
||||
CFLAGS += -g -Og -fprofile-instr-generate -fcoverage-mapping
|
||||
LDFLAGS += -fprofile-instr-generate -fcoverage-mapping
|
||||
else
|
||||
CFLAGS += -O2
|
||||
endif
|
||||
|
||||
ifeq ($(SANITIZE),1)
|
||||
CFLAGS += -fsanitize=address -fsanitize=undefined
|
||||
LDFLAGS += -fsanitize=address -fsanitize=undefined
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: $(LIB) $(TBIN)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||
.PHONY: test
|
||||
test: $(TBIN)
|
||||
@./$(TBIN)
|
||||
|
||||
.PHONY: cov
|
||||
cov: $(PROFDATA_FILE)
|
||||
@llvm-cov report $(TBIN) -instr-profile=$(PROFDATA_FILE)
|
||||
|
||||
.PHONY: cov-show
|
||||
cov-show: $(PROFDATA_FILE)
|
||||
@llvm-cov show $(TBIN) --use-color -instr-profile=$(PROFDATA_FILE) $(f) | less -R
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f $(LIB) $(OBJ)
|
||||
rm -f $(TBIN) $(TOBJ)
|
||||
rm -f $(PROFRAW_FILE) $(PROFDATA_FILE)
|
||||
rm -f fakeNAND.bin fakeNAND_meta.bin
|
||||
|
||||
$(LIB): $(OBJ)
|
||||
$(AR) rcs $@ $^ >/dev/null
|
||||
|
||||
$(TBIN): $(TOBJ) $(LIB) $(MTARLIB)
|
||||
$(CC) -o $@ $^
|
||||
$(CC) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -f $(LIB) $(OBJ)
|
||||
rm -f $(TBIN) $(TOBJ)
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||
|
||||
# use separate rule instead of depending on 'test' to avoid re-running
|
||||
$(PROFRAW_FILE): $(TBIN)
|
||||
@./$(TBIN)
|
||||
|
||||
$(PROFDATA_FILE): $(PROFRAW_FILE)
|
||||
@llvm-profdata merge -sparse $(PROFRAW_FILE) -o $(PROFDATA_FILE)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue