diff --git a/Makefile.base b/Makefile.base index 58124cc1e5..4c285157ab 100644 --- a/Makefile.base +++ b/Makefile.base @@ -18,7 +18,7 @@ _MOD := $(shell basename $(CURDIR)) MODULE ?= $(_MOD) .PHONY: all clean $(DIRS:%=ALL--%) $(DIRS:%=CLEAN--%) $(MODULE).module \ - compile-commands $(DIRS:%=COMPILE-COMMANDS--%) + compile-commands $(DIRS:%=COMPILE-COMMANDS--%) $(MODULE).cleanup all: $(MODULE).module ..nothing @@ -113,9 +113,16 @@ include $(RIOTMAKE)/tools/fixdep.inc.mk $(BINDIR)/$(MODULE)/: $(Q)mkdir -p $@ +OLD_OBJECTS = $(wildcard $(BINDIR)/$(MODULE)/*.o) +OBJECTS_TO_REMOVE = $(filter-out $(OBJ),$(OLD_OBJECTS)) + $(MODULE).module compile-commands $(OBJ): | $(BINDIR)/$(MODULE)/ -$(MODULE).module: $(OBJ) | $(DIRS:%=ALL--%) +$(MODULE).module: $(OBJ) $(if $(OBJECTS_TO_REMOVE),$(MODULE).cleanup) | $(DIRS:%=ALL--%) + +$(MODULE).cleanup: + $(Q)# cleanup non selected source files objects + $(Q)$(RM) $(OBJECTS_TO_REMOVE) CXXFLAGS = $(filter-out $(CXXUWFLAGS), $(CFLAGS)) $(CXXEXFLAGS) CCASFLAGS = $(filter-out $(CCASUWFLAGS), $(CFLAGS)) $(CCASEXFLAGS)