Ok, how about this more coherent comment: I suggest that no make entry depend on any .cm file, and that the entry for the .cm file be $(NAME).cm: ( \ echo 'Group is' && \ ... \ ) >$(NAME).cm This way there is no Make DWIMishness, and the only way to have the cmcat stuff run is to explicitly run `make mlyacc.cm'.