diff options
Diffstat (limited to 'lib/x1000-installer/Makefile')
-rw-r--r-- | lib/x1000-installer/Makefile | 56 |
1 files changed, 49 insertions, 7 deletions
diff --git a/lib/x1000-installer/Makefile b/lib/x1000-installer/Makefile index 35fa747aab..1a63e6d5b3 100644 --- a/lib/x1000-installer/Makefile +++ b/lib/x1000-installer/Makefile | |||
@@ -20,19 +20,61 @@ MTARINC = -I../microtar/src | |||
20 | MTARLIB = ../microtar/libmicrotar.a | 20 | MTARLIB = ../microtar/libmicrotar.a |
21 | 21 | ||
22 | CPPFLAGS = -Iinclude -Itest_lib $(MTARINC) -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L | 22 | CPPFLAGS = -Iinclude -Itest_lib $(MTARINC) -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L |
23 | CFLAGS = -std=c99 -Wall -Wextra -O2 | 23 | CFLAGS = -std=c99 -Wall -Wextra |
24 | LDFLAGS = | ||
24 | 25 | ||
26 | PROFRAW_FILE=$(TBIN).profraw | ||
27 | PROFDATA_FILE=$(TBIN).profdata | ||
28 | |||
29 | export LLVM_PROFILE_FILE=$(PROFRAW_FILE) | ||
30 | |||
31 | ifeq ($(COVERAGE),1) | ||
32 | CC = clang | ||
33 | CFLAGS += -g -Og -fprofile-instr-generate -fcoverage-mapping | ||
34 | LDFLAGS += -fprofile-instr-generate -fcoverage-mapping | ||
35 | else | ||
36 | CFLAGS += -O2 | ||
37 | endif | ||
38 | |||
39 | ifeq ($(SANITIZE),1) | ||
40 | CFLAGS += -fsanitize=address -fsanitize=undefined | ||
41 | LDFLAGS += -fsanitize=address -fsanitize=undefined | ||
42 | endif | ||
43 | |||
44 | .PHONY: all | ||
25 | all: $(LIB) $(TBIN) | 45 | all: $(LIB) $(TBIN) |
26 | 46 | ||
27 | %.o: %.c | 47 | .PHONY: test |
28 | $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ | 48 | test: $(TBIN) |
49 | @./$(TBIN) | ||
29 | 50 | ||
30 | $(LIB): $(OBJ) | 51 | .PHONY: cov |
31 | $(AR) rcs $@ $^ >/dev/null | 52 | cov: $(PROFDATA_FILE) |
53 | @llvm-cov report $(TBIN) -instr-profile=$(PROFDATA_FILE) | ||
32 | 54 | ||
33 | $(TBIN): $(TOBJ) $(LIB) $(MTARLIB) | 55 | .PHONY: cov-show |
34 | $(CC) -o $@ $^ | 56 | cov-show: $(PROFDATA_FILE) |
57 | @llvm-cov show $(TBIN) --use-color -instr-profile=$(PROFDATA_FILE) $(f) | less -R | ||
35 | 58 | ||
59 | .PHONY: clean | ||
36 | clean: | 60 | clean: |
37 | rm -f $(LIB) $(OBJ) | 61 | rm -f $(LIB) $(OBJ) |
38 | rm -f $(TBIN) $(TOBJ) | 62 | rm -f $(TBIN) $(TOBJ) |
63 | rm -f $(PROFRAW_FILE) $(PROFDATA_FILE) | ||
64 | rm -f fakeNAND.bin fakeNAND_meta.bin | ||
65 | |||
66 | $(LIB): $(OBJ) | ||
67 | $(AR) rcs $@ $^ >/dev/null | ||
68 | |||
69 | $(TBIN): $(TOBJ) $(LIB) $(MTARLIB) | ||
70 | $(CC) -o $@ $^ $(LDFLAGS) | ||
71 | |||
72 | %.o: %.c | ||
73 | $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ | ||
74 | |||
75 | # use separate rule instead of depending on 'test' to avoid re-running | ||
76 | $(PROFRAW_FILE): $(TBIN) | ||
77 | @./$(TBIN) | ||
78 | |||
79 | $(PROFDATA_FILE): $(PROFRAW_FILE) | ||
80 | @llvm-profdata merge -sparse $(PROFRAW_FILE) -o $(PROFDATA_FILE) | ||