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
|
xf_test
|
||||||
fakeNAND.bin
|
fakeNAND.bin
|
||||||
fakeNAND_meta.bin
|
fakeNAND_meta.bin
|
||||||
|
*.profraw
|
||||||
|
*.profdata
|
||||||
|
|
|
||||||
|
|
@ -20,19 +20,61 @@ MTARINC = -I../microtar/src
|
||||||
MTARLIB = ../microtar/libmicrotar.a
|
MTARLIB = ../microtar/libmicrotar.a
|
||||||
|
|
||||||
CPPFLAGS = -Iinclude -Itest_lib $(MTARINC) -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L
|
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)
|
all: $(LIB) $(TBIN)
|
||||||
|
|
||||||
%.o: %.c
|
.PHONY: test
|
||||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
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)
|
$(LIB): $(OBJ)
|
||||||
$(AR) rcs $@ $^ >/dev/null
|
$(AR) rcs $@ $^ >/dev/null
|
||||||
|
|
||||||
$(TBIN): $(TOBJ) $(LIB) $(MTARLIB)
|
$(TBIN): $(TOBJ) $(LIB) $(MTARLIB)
|
||||||
$(CC) -o $@ $^
|
$(CC) -o $@ $^ $(LDFLAGS)
|
||||||
|
|
||||||
clean:
|
%.o: %.c
|
||||||
rm -f $(LIB) $(OBJ)
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||||
rm -f $(TBIN) $(TOBJ)
|
|
||||||
|
# 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