$(MAKE) stage=3
 
 ifeq "$(CLEAN_ALL_STAGES)" "YES"
-clean distclean::
+clean distclean maintainer-clean::
        $(RM) -f prelude/primops.txt
        $(RM) -f $(PRIMOP_BITS)
        $(RM) -f $(CONFIG_HS)
 endif
 
 ifeq "$(CLEAN_ALL_STAGES)" "YES"
-clean distclean:: clean.stage.1 clean.stage.2 clean.stage.3
+clean distclean maintainer-clean:: clean.stage.1 clean.stage.2 clean.stage.3
 else
-clean distclean:: clean.stage.$(stage)
+clean distclean maintainer-clean:: clean.stage.$(stage)
 endif
 
 ifeq "$(CLEAN_ALL_STAGES)" "YES"
-distclean::
+distclean maintainer-clean::
        $(RM) -f ghc.cabal
 endif
 
 
 
 
 ifeq "$(CLEAN_ALL_STAGES)" "YES"
-clean distclean:: clean.stage.1 clean.stage.2 clean.stage.3
+clean distclean maintainer-clean:: clean.stage.1 clean.stage.2 clean.stage.3
 else
-clean distclean:: clean.stage.$(stage)
+clean distclean maintainer-clean:: clean.stage.$(stage)
 endif
 
 ifeq "$(CLEAN_ALL_STAGES)" "YES"
-distclean::
+distclean maintainer-clean::
        $(RM) -f ghc-bin.cabal
 endif
 
 
        if $(IFBUILDABLE) $* && [ -d $*/dist/doc/html/*/src/ ]; then cp hscolour.css $*/dist/doc/html/*/src/; fi
 endif
 
-.PHONY: distclean clean clean.library.%
+.PHONY: maintainer-clean distclean clean clean.library.%
 
+maintainer-clean: clean
 distclean: clean
 
 clean: $(foreach SUBDIR,$(SUBDIRS),clean.library.$(SUBDIR))
        $(MAKE) -C dph clean
 endif
 
-distclean:
+maintainer-clean distclean:
        $(RM) $(foreach lib, $(SUBDIRS), $(lib)/.depend $(lib)/.depend.bak)
 
 $(foreach SUBDIR,$(SUBDIRS),clean.library.$(SUBDIR)): \