Port
Bug 912292 - Always traverse sub-directories after executing rules in the current directory. r=build system peer port of m-c patch,a=bustage-fix
new file mode 100644
--- /dev/null
+++ b/config/recurse.mk
@@ -0,0 +1,37 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ifndef INCLUDED_RULES_MK
+include $(topsrcdir)/config/rules.mk
+endif
+
+#########################
+# Tier traversal handling
+#########################
+
+define CREATE_SUBTIER_TRAVERSAL_RULE
+PARALLEL_DIRS_$(1) = $$(addsuffix _$(1),$$(PARALLEL_DIRS))
+
+.PHONY: $(1) $$(PARALLEL_DIRS_$(1))
+
+ifdef PARALLEL_DIRS
+$$(PARALLEL_DIRS_$(1)): %_$(1): %/Makefile
+ +@$$(call SUBMAKE,$(1),$$*)
+endif
+
+$(1):: $$(SUBMAKEFILES)
+ifdef PARALLEL_DIRS
+ +@$(MAKE) $$(PARALLEL_DIRS_$(1))
+endif
+ $$(LOOP_OVER_DIRS)
+
+endef
+
+$(foreach subtier,export libs tools,$(eval $(call CREATE_SUBTIER_TRAVERSAL_RULE,$(subtier))))
+
+export:: $(SUBMAKEFILES)
+ $(LOOP_OVER_TOOL_DIRS)
+
+tools:: $(SUBMAKEFILES)
+ $(foreach dir,$(TOOL_DIRS),$(call SUBMAKE,libs,$(dir)))
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -700,40 +700,16 @@ depend::
# Target to only regenerate makefiles
makefiles: $(SUBMAKEFILES)
ifneq (,$(DIRS)$(TOOL_DIRS)$(PARALLEL_DIRS))
$(LOOP_OVER_PARALLEL_DIRS)
$(LOOP_OVER_DIRS)
$(LOOP_OVER_TOOL_DIRS)
endif
-ifdef PARALLEL_DIRS
-export:: $(PARALLEL_DIRS_export)
-
-$(PARALLEL_DIRS_export): %_export: %/Makefile
- +@$(call SUBMAKE,export,$*)
-endif
-
-export:: $(SUBMAKEFILES) $(MAKE_DIRS)
- $(LOOP_OVER_DIRS)
- $(LOOP_OVER_TOOL_DIRS)
-
-ifdef PARALLEL_DIRS
-tools:: $(PARALLEL_DIRS_tools)
-
-$(PARALLEL_DIRS_tools): %_tools: %/Makefile
- +@$(call SUBMAKE,tools,$*)
-endif
-
-tools:: $(SUBMAKEFILES) $(MAKE_DIRS)
- $(LOOP_OVER_DIRS)
-ifneq (,$(strip $(TOOL_DIRS)))
- $(foreach dir,$(TOOL_DIRS),$(call SUBMAKE,libs,$(dir)))
-endif
-
#
# Rule to create list of libraries for final link
#
export::
ifdef LIBRARY_NAME
ifdef EXPORT_LIBRARY
ifndef IS_COMPONENT
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_LINK_LIBS) $(STATIC_LIBRARY_NAME)