summaryrefslogtreecommitdiff
blob: 86aea5588a2f8697432efb7630c33a805070bdfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
--- a/Makefile.lib	2014-05-30 13:45:11.756422117 -0400
+++ b/Makefile.lib	2014-05-30 13:47:22.626423230 -0400
@@ -117,7 +117,7 @@
  $(sort $(filter-out $(LIB_O_NAME),$(OBJS))) \
  $(foreach subdir,$(sort $(SUBDIRS)),$(wildcard $(subdir)/$(LIB_O_NAME)))
 
-$(LIB_O_NAME): $(LIB_O_DEPS)
+$(LIB_O_NAME): all-recursive.built $(LIB_O_DEPS)
 	$(call cmd,ld_objs)
 
 DEP_FILES_1 = $(foreach src,$(OBJS),.deps/$(src))
@@ -260,21 +260,36 @@
 # remaining subdirectories, but return an error at the end.
 $(RULES_REC):
 ifneq (,$(findstring k,$(MAKEFLAGS)))
-	@suberr=0; \
+	@+suberr=0; \
 	$(foreach subdir,$(sort $(SUBDIRS)), \
 		$(call ncmd,recmake,$(subdir),$(subst -recursive,,$@)) || suberr=1;) \
 	exit $$suberr
 else
-	@$(foreach subdir,$(sort $(SUBDIRS)), \
+	@+$(foreach subdir,$(sort $(SUBDIRS)), \
 		$(call ncmd,recmake,$(subdir),$(subst -recursive,,$@)) || exit 1;)
 endif
 
+all-recursive.built:
+ifneq (,$(findstring k,$(MAKEFLAGS)))
+	@+suberr=0; \
+	$(foreach subdir,$(sort $(SUBDIRS)), \
+		$(call ncmd,recmake,$(subdir),$(subst -recursive.built,,$@)) || suberr=1;) \
+	[ $$suberr == 0 ] && touch $@; \
+	exit $$suberr
+else
+	@+$(foreach subdir,$(sort $(SUBDIRS)), \
+		$(call ncmd,recmake,$(subdir),$(subst -recursive.built,,$@)) || exit 1;) \
+	touch $@
+endif
+
+CLEAN += all-recursive.built
+
 # Dummy -local rules
 $(RULES_LOCAL):
 
 # Default deps
 rule_deps = $(1)-recursive $(1)-default $(1)-local
-all:	  $(call rule_deps,all)
+all:	  $(subst recursive,recursive.built,$(call rule_deps,all))
 install:  $(call rule_deps,install)
 clean:	  $(call rule_deps,clean)
 cleanall: $(call rule_deps,cleanall)