From 182b603a017b745d2bc618f50feb54eeab4b1a86 Mon Sep 17 00:00:00 2001
From: Ludwig Ortmann <ludwig.ortmann@fu-berlin.de>
Date: Sat, 27 Sep 2014 11:29:11 +0200
Subject: [PATCH] make: 1571 fixup: dont create existing directories

This fixes an error which was introduced by commit
346313bf07304c5636739d028c7b70acb4b507f9

The timestamp of directories is updated when a file inside a directory
is changed.
Therefore, make decides a target needs to be rebuilt, whenever that
target depends on its parent directory, because the directory is
always newer than the file inside.

http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Prerequisite-Types.html

    Occasionally, however, you have a situation where you want to
    impose a specific ordering on the rules to be invoked without
    forcing the target to be updated if one of those rules is
    executed. In that case, you want to define order-only
    prerequisites. Order-only prerequisites can be specified by
    placing a pipe symbol (|) in the prerequisites list: any
    prerequisites to the left of the pipe symbol are normal; any
    prerequisites to the right are order-only:

         targets : normal-prerequisites | order-only-prerequisites
---
 Makefile.base | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/Makefile.base b/Makefile.base
index 6e56df9e6f..c07915afd4 100644
--- a/Makefile.base
+++ b/Makefile.base
@@ -46,23 +46,26 @@ DEP := $(OBJC:.o=.d) $(OBJCXX:.o=.d) $(ASSMOBJ:.o=.d)
 $(BINDIR)$(MODULE)/:
 	$(AD)mkdir -p $@
 
-$(BINDIR)$(MODULE).a: $(OBJ) ${DIRS:%=ALL--%} $(BINDIR)$(MODULE)/
-	$(AD)$(AR) -rcs $@ $(OBJ)
+$(BINDIR)$(MODULE).a $(OBJ): | $(BINDIR)$(MODULE)/
+
+$(BINDIR)$(MODULE).a: $(OBJ) | ${DIRS:%=ALL--%}
+   $(AD)$(AR) -rcs $@ $(OBJ)
+
 
 CXXFLAGS = $(filter-out $(CXXUWFLAGS), $(CFLAGS)) $(CXXEXFLAGS)
 
 # compile and generate dependency info
 
-$(OBJC): $(BINDIR)$(MODULE)/%.o: %.c $(BINDIR)$(MODULE)/
+$(OBJC): $(BINDIR)$(MODULE)/%.o: %.c
 	$(AD)$(CC) $(CFLAGS) $(INCLUDES) -MD -MP -c -o $@ $(abspath $<)
 
-$(OBJCXX): $(BINDIR)$(MODULE)/%.o: %.cpp $(BINDIR)$(MODULE)/
+$(OBJCXX): $(BINDIR)$(MODULE)/%.o: %.cpp
 	$(AD)$(CXX) $(CXXFLAGS) $(INCLUDES) -MD -MP -c -o $@ $(abspath $<)
 
-$(ASMOBJ): $(BINDIR)$(MODULE)/%.o: %.s $(BINDIR)$(MODULE)/
+$(ASMOBJ): $(BINDIR)$(MODULE)/%.o: %.s
 	$(AD)$(AS) $(ASFLAGS) -o $@ $(abspath $<)
 
-$(ASSMOBJ): $(BINDIR)$(MODULE)/%.o: %.S $(BINDIR)$(MODULE)/
+$(ASSMOBJ): $(BINDIR)$(MODULE)/%.o: %.S
 	$(AD)$(CC) $(CFLAGS) $(INCLUDES) -MD -MP -c -o $@ $(abspath $<)
 
 # pull in dependency info for *existing* .o files
-- 
GitLab