Skip to content

Commit e3e0236

Browse files
committed
Make: Add explicit dependency tracking to avoid false test runs
Signed-off-by: Siddharth Chandrasekaran <sidcha.dev@gmail.com>
1 parent 506debd commit e3e0236

1 file changed

Lines changed: 31 additions & 12 deletions

File tree

Makefile

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ include config.make
1212

1313
O ?= $(BUILD_DIR)
1414
OBJ_LIBOSDP := $(SRC_LIBOSDP:%.c=$(O)/%.o)
15-
OBJ_TEST := $(SRC_TEST:%.c=$(O)/%.o)
15+
OBJ_TEST := $(SRC_TEST:%.c=$(O)/check/%.o)
16+
OBJ_CP_APP := $(O)/examples/c/cp_app.o
17+
OBJ_PD_APP := $(O)/examples/c/pd_app.o
18+
DEP_LIBOSDP := $(OBJ_LIBOSDP:.o=.d)
19+
DEP_TEST := $(OBJ_TEST:.o=.d)
20+
DEP_APP := $(OBJ_CP_APP:.o=.d) $(OBJ_PD_APP:.o=.d)
1621
CCFLAGS += -Wall -Wextra -O3
1722

1823
ifeq ($(V),)
@@ -38,7 +43,12 @@ cp_app: $(O)/cp_app.elf
3843
$(O)/%.o: %.c
3944
@echo " CC $<"
4045
@mkdir -p $(@D)
41-
$(Q)$(CC) -c $< $(CCFLAGS) $(CCFLAGS_EXTRA) -o $@
46+
$(Q)$(CC) -c $< $(CCFLAGS) $(CCFLAGS_EXTRA) -MMD -MP -o $@
47+
48+
$(O)/check/%.o: %.c
49+
@echo " CC $<"
50+
@mkdir -p $(@D)
51+
$(Q)$(CC) -c $< $(CCFLAGS) $(CCFLAGS_EXTRA) -MMD -MP -o $@
4252

4353
$(O)/libosdp.a: CCFLAGS_EXTRA=-Iutils/include -Iinclude -Isrc -I$(O)
4454
$(O)/libosdp.a: $(OBJ_LIBOSDP)
@@ -47,35 +57,45 @@ $(O)/libosdp.a: $(OBJ_LIBOSDP)
4757

4858
## Samples
4959

50-
$(O)/cp_app.elf: $(O)/libosdp.a
60+
$(O)/examples/c/%.o: CCFLAGS_EXTRA=-Iinclude
61+
62+
$(O)/cp_app.elf: $(O)/libosdp.a $(OBJ_CP_APP)
5163
@echo "LINK $(@F)"
52-
$(Q)$(CC) $(CCFLAGS) examples/c/cp_app.c -o $@ -Iinclude -L$(O) -losdp
64+
$(Q)$(CC) $(CCFLAGS) $(OBJ_CP_APP) -o $@ -L$(O) -losdp
5365

54-
$(O)/pd_app.elf: $(O)/libosdp.a
66+
$(O)/pd_app.elf: $(O)/libosdp.a $(OBJ_PD_APP)
5567
@echo "LINK $(@F)"
56-
$(Q)$(CC) $(CCFLAGS) examples/c/pd_app.c -o $@ -Iinclude -L$(O) -losdp
68+
$(Q)$(CC) $(CCFLAGS) $(OBJ_PD_APP) -o $@ -L$(O) -losdp
5769

5870
## Tests
5971

72+
.PHONY: unit-test
73+
unit-test: CCFLAGS_EXTRA=-DUNIT_TESTING -Iutils/include -Iinclude -Isrc -I$(O)
74+
unit-test: $(O)/unit-test
75+
76+
$(O)/unit-test: $(OBJ_TEST)
77+
@echo "LINK $(@F)"
78+
$(Q)$(CC) $(CCFLAGS) $(OBJ_TEST) -o $@
79+
6080
.PHONY: check
61-
check: CCFLAGS_EXTRA=-DUNIT_TESTING -Iutils/include -Iinclude -Isrc -I$(O)
62-
check: clean $(OBJ_TEST)
63-
@echo "LINK $@"
64-
$(Q)$(CC) $(CCFLAGS) $(OBJ_TEST) -o $(O)/unit-test
81+
check: unit-test
6582
$(Q)$(O)/unit-test
6683

6784
## Clean
6885

6986
.PHONY: clean
7087
clean:
71-
$(Q)rm -f $(O)/src/*.o $(O)/src/crypto/*.o $(OBJ_TEST)
88+
$(Q)rm -f $(O)/src/*.o $(O)/src/crypto/*.o $(OBJ_TEST) $(OBJ_CP_APP) $(OBJ_PD_APP)
89+
$(Q)rm -rf $(O)/check
7290
$(Q)rm -f $(O)/*.a $(O)/*.elf
7391

7492
.PHONY: distclean
7593
distclean: clean
7694
$(Q)rm config.make
7795
$(Q)rm -rf $(O)
7896

97+
-include $(DEP_LIBOSDP) $(DEP_TEST) $(DEP_APP)
98+
7999
## Install
80100

81101
.PHONY: install
@@ -88,4 +108,3 @@ install: libosdp
88108
install -m 644 include/osdp.h $(DESTDIR)$(PREFIX)/include/
89109
install -m 644 include/osdp.hpp $(DESTDIR)$(PREFIX)/include/
90110
install -m 644 $(O)/include/osdp_export.h $(DESTDIR)$(PREFIX)/include/
91-

0 commit comments

Comments
 (0)