From: Sam Ravnborg Make the difference between 'make clean' and 'make distclean/mrproper' more explicit. make clean now removes all generated files except .config* and .version. The result is much easier to understand now. make clean deletes all generated files (except .config* and .version). make mrproper deletes configuration and all temporary files left by patch, editors and the like. Example output: > make mrproper CLEAN init CLEAN usr CLEAN scripts/kconfig CLEAN scripts CLEAN .tmp_versions include/config CLEAN include/asm-i386/asm_offsets.h include/linux/autoconf.h include/linux/version.h include/asm .tmp_versions CLEAN .version .config Form the list of files/directories deleted during make clean, removed all references that is no longer relevant for the current kernel. --- 25-akpm/Makefile | 51 ++++++++++++++++++++++++--------------------------- 1 files changed, 24 insertions(+), 27 deletions(-) diff -puN Makefile~kbuild-more-cleaning Makefile --- 25/Makefile~kbuild-more-cleaning Fri Mar 5 14:16:10 2004 +++ 25-akpm/Makefile Fri Mar 5 14:16:10 2004 @@ -758,26 +758,15 @@ endef # Any core files spread around are deleted as well # make distclean Remove editor backup files, patch leftover files and the like -# Files removed with 'make clean' -CLEAN_FILES += vmlinux System.map MC* +# Directories & files removed with 'make clean' +CLEAN_DIRS += $(MODVERDIR) include/config include2 +CLEAN_FILES += vmlinux System.map \ + include/linux/autoconf.h include/linux/version.h \ + include/asm include/linux/modversions.h \ + kernel.spec .tmp* # Files removed with 'make mrproper' -MRPROPER_FILES += \ - include/linux/autoconf.h include/linux/version.h \ - .version .config .config.old config.in config.old \ - .menuconfig.log \ - include/asm \ - .hdepend include/linux/modversions.h \ - tags TAGS cscope* kernel.spec \ - .tmp* - -# Directories removed with 'make mrproper' -MRPROPER_DIRS += \ - $(MODVERDIR) \ - .tmp_export-objs \ - include/config \ - include/linux/modules \ - include2 +MRPROPER_FILES += .version .config .config.old tags TAGS cscope* # clean - Delete all intermediate files # @@ -786,28 +775,36 @@ clean-dirs += $(addprefix _clean_,$(ALL_ $(clean-dirs): $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) -quiet_cmd_rmclean = RM $$(CLEAN_FILES) -cmd_rmclean = rm -f $(CLEAN_FILES) +clean: rm-dirs := $(wildcard $(CLEAN_DIRS)) +mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) +quiet_cmd_rmdirs = $(if $(rm-dirs),CLEAN $(rm-dirs)) + cmd_rmdirs = rm -rf $(rm-dirs) + +clean: rm-files := $(wildcard $(CLEAN_FILES)) +mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) +quiet_cmd_rmfiles = $(if $(rm-files),CLEAN $(rm-files)) + cmd_rmfiles = rm -rf $(rm-files) + clean: archclean $(clean-dirs) - $(call cmd,rmclean) + $(call cmd,rmdirs) + $(call cmd,rmfiles) @find . $(RCS_FIND_IGNORE) \ \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \ -type f -print | xargs rm -f -# mrproper - delete configuration + modules + core files +# mrproper # -quiet_cmd_mrproper = RM $$(MRPROPER_DIRS) + $$(MRPROPER_FILES) -cmd_mrproper = rm -rf $(MRPROPER_DIRS) && rm -f $(MRPROPER_FILES) -mrproper distclean: clean archmrproper - @echo ' Making $@ in the srctree' +distclean: mrproper +mrproper: clean archmrproper + $(call cmd,rmdirs) + $(call cmd,rmfiles) @find . $(RCS_FIND_IGNORE) \ \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ -o -name '.*.rej' -o -size 0 \ -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \ -type f -print | xargs rm -f - $(call cmd,mrproper) # Generate tags for editors # --------------------------------------------------------------------------- _