When using CVS I always use cvspurge (from the CVS Utilities package) to delete the auto generated files that are not deleted by make distclean
, this is useful to test local and uncommitted changes in the otherwise clean source tree.
This is why some months ago I wrote a purge extension for Mercurial. Now my code, improved by Emanuele, has been included among the official extensions so it will be shipped in the Mercurial packages of all distros.