diff --git a/Makefile.base b/Makefile.base
index 6e56df9e6f507c8f593b07799980609ac9d60155..b54bcb8f90be3a59c09593ddd401a66031fe9d7d 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 $@ $?
+
 
 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