all: subdirs LANGUAGES = C Python SOURCE_SUBDIRS := $(patsubst %,Source/%,$(sort $(LANGUAGES))) SUBDIRS := $(SOURCE_SUBDIRS) Tests CLEAN_SUBDIRS := $(patsubst %,%-clean,$(sort $(SUBDIRS))) .PHONY: subdirs $(SUBDIRS) subdirs: $(SUBDIRS) $(SUBDIRS): $(MAKE) -C $@ .PHONY: $(CLEAN_SUBDIRS) $(CLEAN_SUBDIRS): -$(MAKE) -C $(@:-clean=) clean clean: $(CLEAN_SUBDIRS) test: @$(MAKE) -C Tests