(1) bsd.prog.mk already includes bsd.subdir.mk, and (2) including bsd.subdir.mk first screws up the clean/cleandir targets in such a way that the program's objects don't get blown away when you make clean.