.PHONY:all %.all install %.install clean %.clean cleandist %.cleandist release

SUBMAKE:=make -s -C
SUBMAKABLE:=$(shell find . -mindepth 2 -name '[Mm]akefile' | sed 's%^./%%;s%/[^/]*%%')
define submake
	@tput setaf 3
	@echo make[$1] $2
	@tput sgr0
	@$3 $(SUBMAKE) $1 $2
endef

all: $(patsubst %,%.all,$(SUBMAKABLE))

%.all:
	$(call submake,$*,,)

install: $(patsubst %,%.install,$(SUBMAKABLE))

%.install:
	$(call submake,$*,install,sudo)

clean: $(patsubst %,%.clean,$(SUBMAKABLE))

%.clean:
	$(call submake,$*,clean,)

cleandist: $(patsubst %,%.cleandist,$(SUBMAKABLE))

%.cleandist:
	$(call submake,$*,cleandist,)

release:
	$(call submake,.,,)
	$(call submake,.,clean,)