Hi,

attached patch should help devs to more easily understand the "main
loop" that includes Makefile.incs.

Signed-off-by: Patrick Georgi <[email protected]>
Index: Makefile
===================================================================
--- Makefile    (revision 5186)
+++ Makefile    (working copy)
@@ -119,9 +119,33 @@
 crt0s:=
 ldscripts:=
 types:=obj initobj driver smmobj
-includemakefiles=$(foreach type,$(2), $(eval $(type)-y:=)) $(eval subdirs-y:=) 
$(eval -include $(1)) $(if $(strip $(3)),$(foreach type,$(2),$(eval 
$(type)s+=$$(patsubst util/%,$(obj)/util/%,$$(patsubst 
src/%,$(obj)/%,$$(addprefix $(dir $(1)),$$($(type)-y))))))) $(eval 
subdirs+=$$(subst $(PWD)/,,$$(abspath $$(addprefix $(dir $(1)),$$(subdirs-y)))))
-evaluate_subdirs=$(eval cursubdirs:=$(subdirs)) $(eval subdirs:=) $(foreach 
dir,$(cursubdirs),$(eval $(call 
includemakefiles,$(dir)/Makefile.inc,$(types),$(1)))) $(if $(subdirs),$(eval 
$(call evaluate_subdirs, $(1))))
 
+# Clean -y variables, include Makefile.inc
+# If $(3) is non-empty, add paths to files in X-y, and add them to Xs
+# Add subdirs-y to subdirs
+includemakefiles= \
+       $(foreach type,$(2), $(eval $(type)-y:=)) \
+       $(eval subdirs-y:=) \
+       $(eval -include $(1)) \
+       $(if $(strip $(3)), \
+               $(foreach type,$(2), \
+                       $(eval $(type)s+= \
+                               $$(patsubst util/%, \
+                                       $(obj)/util/%, \
+                                       $$(patsubst src/%, \
+                                               $(obj)/%, \
+                                               $$(addprefix $(dir 
$(1)),$$($(type)-y))))))) \
+       $(eval subdirs+=$$(subst $(PWD)/,,$$(abspath $$(addprefix $(dir 
$(1)),$$(subdirs-y)))))
+
+# For each path in $(subdirs) call includemakefiles, passing $(1) as $(3)
+# Repeat until subdirs is empty
+evaluate_subdirs= \
+       $(eval cursubdirs:=$(subdirs)) \
+       $(eval subdirs:=) \
+       $(foreach dir,$(cursubdirs), \
+               $(eval $(call 
includemakefiles,$(dir)/Makefile.inc,$(types),$(1)))) \
+       $(if $(subdirs),$(eval $(call evaluate_subdirs, $(1))))
+
 # collect all object files eligible for building
 subdirs:=$(PLATFORM-y) $(BUILD-y)
 $(eval $(call evaluate_subdirs, modify))
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to