# # $Id$ # # Top level rules For Subdirectory Recursions # # $Log$ # all:: inc install rebuild:: clean uninstall all $(DIRS) :: $(MAKE) -C $@ DO_X += inc DO_X += install DO_X += build dirPart = $(word 1, $(subst $(DIVIDER), ,$@)) actionPart = $(word 2, $(subst $(DIVIDER), ,$@)) buildPart = $(word 3, $(subst $(DIVIDER), ,$@)) hostDirTargets = $(foreach x, $(DO_X),\ $(foreach dir, $(DIRS), $(dir)$(DIVIDER)$(x)$(DIVIDER)host)) crossDirTargets += $(foreach x, $(DO_X),\ $(foreach dir, $(DIRS), $(dir)$(DIVIDER)$(x)$(DIVIDER)cross)) host :: $(hostDirTargets) cross :: $(crossDirTargets) $(hostDirTargets) $(crossDirTargets) :: $(MAKE) -C $(dirPart) $(actionPart)$(DIVIDER)$(buildPart) fakeHost = $(foreach dir, $(DIRS), $(dir)$(DIVIDER)$(DIVIDER)host) fakeCross = $(foreach dir, $(DIRS), $(dir)$(DIVIDER)$(DIVIDER)cross) inc:: inc$(DIVIDER)host inc$(DIVIDER)cross inc$(DIVIDER)host :: $(subst ,inc,$(fakeHost)) inc$(DIVIDER)cross :: $(subst ,inc,$(fakeCross)) install :: install$(DIVIDER)host install$(DIVIDER)cross install$(DIVIDER)host :: $(subst ,install,$(fakeHost)) install$(DIVIDER)cross :: $(subst ,install,$(fakeCross)) build :: build$(DIVIDER)host build$(DIVIDER)cross build$(DIVIDER)host :: $(subst ,build,$(fakeHost)) build$(DIVIDER)cross :: $(subst ,build,$(fakeCross)) clean :: $(addsuffix $(DIVIDER)clean, $(DIRS)) %$(DIVIDER)clean: $(MAKE) -C $* clean depends :: $(foreach dir, $(DIRS), $(dir)$(DIVIDER)depends) %$(DIVIDER)depends : $(MAKE) -C $* depends .PHONY : $(DIRS) .PHONY : host cross .PHONY : $(hostDirTargets) $(crossDirTargets) .PHONY : $(DO_X) .PHONY : all clean depends