- list='$(PROFILE_SUBDIRS)'; for d in $$list ; do \
- (cd $$d && $(MAKE) $*) || { final_exit="exit 1"; $$dk; } ; \
- done; \
- if [ $* = "all" -a -n "$(PROFILE_PARALLEL_SUBDIRS)" ]; then \
- $(MAKE) do-all-parallel ENABLE_PARALLEL_SUBDIR_BUILD=1 || { final_exit="exit 1"; $$dk; } ; \
- else \
- list='$(PROFILE_PARALLEL_SUBDIRS)'; for d in $$list ; do \
- (cd $$d && $(MAKE) $*) || { final_exit="exit 1"; $$dk; } ; \
- done; \
- fi; \
+ final_exit=:; \
+ $(foreach subdir,$(PROFILE_SUBDIRS),$(MAKE) -C $(subdir) $* || { final_exit="exit 1"; $$dk; };) \
+ $(if $(PROFILE_PARALLEL_SUBDIRS), \
+ $(if $(filter $*,all), \
+ $(MAKE) $(PROFILE_PARALLEL_SUBDIRS) ENABLE_PARALLEL_SUBDIR_BUILD=1 || { final_exit="exit 1"; $$dk; };, \
+ $(foreach subdir,$(PROFILE_PARALLEL_SUBDIRS),$(MAKE) -C $(subdir) $* || { final_exit="exit 1"; $$dk; };))) \