@@ -12,7 +12,12 @@ include config.make
1212
1313O ?= $(BUILD_DIR )
1414OBJ_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 )
1621CCFLAGS += -Wall -Wextra -O3
1722
1823ifeq ($(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
7087clean :
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
7593distclean : 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