More readable recursive descent macro in Makefile
Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5195 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
59356ca48b
commit
47d68d8b66
28
Makefile
28
Makefile
|
@ -119,8 +119,32 @@ smmobjs:=
|
|||
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)
|
||||
|
|
Loading…
Reference in New Issue