Сабж. Как это делается красиво и правильно? Когда-то давно, да поздно ночью родил вот такой костылище, сейчас увидел - ужаснулся:
define parse_subdir
$(eval dir=$(1))\
$(eval subdirs=$(addprefix $(1),$(filter %/,$(subdirs-y))))\
$(eval vfiles+=$(addprefix $(1), $(filter-out %/,$(rtl-y))))\
$(eval ucffiles+=$(addprefix $(1), $(filter-out %/,$(ucf-y))))\
$(eval vhifiles+=$(addprefix $(1), $(filter-out %/,$(vhi-y))))\
$(eval rtl-y= )\
$(eval ucf-y= )\
$(eval subdirs-y= )\
$(eval vhi-y= )\
$(foreach dir, $(subdirs),$(eval include $(dir)Makefile) $(call parse_subdir,$(dir)))
endef
define load_submakes
include $(1)Makefile
load_makes= $$(call parse_subdir, $(1))
$$(load_makes)
endef
$(eval $(call load_submakes,$(TOP_DIR)/verilog/))
Сейчас вычищаю, упаковвываю в 'бутылочные рецепты', но просто интересно, может это реализуется как-то проще?