From 7c85e6e0e95013677bc2cdc0bccbabc589d7931d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ga=C3=ABtan=20Harter?= <gaetan.harter@fu-berlin.de>
Date: Fri, 3 Nov 2017 17:53:00 +0100
Subject: [PATCH] Makefile.base: fix AR keeping removed source files objects

AR incrementally adds file without removing files.
If a c file is deleted or disabled(submodule removal) it is not removed from
archive and still ends up in the final elf file.

This fix removes the need to do 'make clean' for this case.

However it will break cases where an APPLICATION and a MODULE or two modules
have the same name and only worked because source files names where different.
---
 Makefile.base | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Makefile.base b/Makefile.base
index 0c5da103d1..ef5d77effe 100644
--- a/Makefile.base
+++ b/Makefile.base
@@ -68,7 +68,9 @@ $(BINDIR)/$(MODULE)/:
 $(BINDIR)/$(MODULE).a $(OBJ): | $(BINDIR)/$(MODULE)/
 
 $(BINDIR)/$(MODULE).a: $(OBJ) | ${DIRS:%=ALL--%}
-	$(Q)$(AR) $(ARFLAGS) $@ $?
+	@# Recreate archive to cleanup deleted/non selected source files objects
+	$(Q)$(RM) $@
+	$(Q)$(AR) $(ARFLAGS) $@ $^
 
 CXXFLAGS = $(filter-out $(CXXUWFLAGS), $(CFLAGS)) $(CXXEXFLAGS)
 CCASFLAGS = $(filter-out $(CCASUWFLAGS), $(CFLAGS)) $(CCASEXFLAGS)
-- 
GitLab