Тут два варианта.
Либо в обработке мишени все выполнять "одной командой", либо написать еще несколько Makefile и разложить по каталогам. Крупные проекты обычно используют второй путь.
Вот пример первого пути:
dist: realclean
(cd .. \
&& $(RM) -f $(DSTNAME) && $(LN) -s $(BINARY) $(DSTNAME) \
&& $(TAR) chyf $(DSTNAME).tar.bz2 $(DSTNAME) && cd $(DSTNAME))
общий принцип - в одной команде записываются все действия. Это не сильно удобно.