yet another fixlet: make clean/distclean/mrproper
No binary (build failed)
—
(log yok)
| @@ -460,7 +460,7 @@ ifeq ($(dot-config),1) | |
| # oldconfig if changes are detected. | |
| -include .kconfig.d | |
| - | include .config |
| + | -include .config |
| # If .config needs to be updated, it will be done via the dependency | |
| # that autoconf has on .config. | |
| @@ -909,13 +909,15 @@ endif # CONFIG_MODULES | |
| # Directories & files removed with 'make clean' | |
| CLEAN_DIRS += $(MODVERDIR) | |
| - | CLEAN_FILES += busybox System.map \ |
| + | CLEAN_FILES += busybox* System.map \ |
| .tmp_kallsyms* .tmp_version .tmp_busybox* .tmp_System.map | |
| # Directories & files removed with 'make mrproper' | |
| MRPROPER_DIRS += include/config include2 | |
| MRPROPER_FILES += .config .config.old include/asm .version .old_version \ | |
| - | include/autoconf.h \ |
| + | include/autoconf.h \ |
| + | include/bbconfigopts.h \ |
| + | include/usage_compressed.h \ |
| .kernelrelease Module.symvers tags TAGS cscope* | |
| # clean - Delete most, but leave enough to build external modules | |
| @@ -940,7 +942,7 @@ clean: archclean $(clean-dirs) | |
| # | |
| mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) | |
| mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) | |
| - | mrproper-dirs := $(addprefix _mrproper_,Documentation/DocBook scripts) |
| + | mrproper-dirs := $(addprefix _mrproper_,scripts) |
| PHONY += $(mrproper-dirs) mrproper archmrproper | |
| $(mrproper-dirs): | |
| @@ -0,0 +1,102 @@ | |
| + | # ========================================================================== |
| + | # Cleaning up |
| + | # ========================================================================== |
| + | |
| + | src := $(obj) |
| + | |
| + | PHONY := __clean |
| + | __clean: |
| + | |
| + | # Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir |
| + | # Usage: |
| + | # $(Q)$(MAKE) $(clean)=dir |
| + | clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj |
| + | |
| + | # The filename Kbuild has precedence over Makefile |
| + | kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) |
| + | include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile) |
| + | |
| + | # Figure out what we need to build from the various variables |
| + | # ========================================================================== |
| + | |
| + | __subdir-y := $(patsubst %/,%,$(filter %/, $(obj-y))) |
| + | subdir-y += $(__subdir-y) |
| + | __subdir-m := $(patsubst %/,%,$(filter %/, $(obj-m))) |
| + | subdir-m += $(__subdir-m) |
| + | __subdir-n := $(patsubst %/,%,$(filter %/, $(obj-n))) |
| + | subdir-n += $(__subdir-n) |
| + | __subdir- := $(patsubst %/,%,$(filter %/, $(obj-))) |
| + | subdir- += $(__subdir-) |
| + | |
| + | # Subdirectories we need to descend into |
| + | |
| + | subdir-ym := $(sort $(subdir-y) $(subdir-m)) |
| + | subdir-ymn := $(sort $(subdir-ym) $(subdir-n) $(subdir-)) |
| + | |
| + | # Add subdir path |
| + | |
| + | subdir-ymn := $(addprefix $(obj)/,$(subdir-ymn)) |
| + | |
| + | # build a list of files to remove, usually releative to the current |
| + | # directory |
| + | |
| + | __clean-files := $(extra-y) $(EXTRA_TARGETS) $(always) \ |
| + | $(targets) $(clean-files) \ |
| + | $(host-progs) \ |
| + | $(hostprogs-y) $(hostprogs-m) $(hostprogs-) |
| + | |
| + | # as clean-files is given relative to the current directory, this adds |
| + | # a $(obj) prefix, except for absolute paths |
| + | |
| + | __clean-files := $(wildcard \ |
| + | $(addprefix $(obj)/, $(filter-out /%, $(__clean-files))) \ |
| + | $(filter /%, $(__clean-files))) |
| + | |
| + | # as clean-dirs is given relative to the current directory, this adds |
| + | # a $(obj) prefix, except for absolute paths |
| + | |
| + | __clean-dirs := $(wildcard \ |
| + | $(addprefix $(obj)/, $(filter-out /%, $(clean-dirs))) \ |
| + | $(filter /%, $(clean-dirs))) |
| + | |
| + | # ========================================================================== |
| + | |
| + | quiet_cmd_clean = CLEAN $(obj) |
| + | cmd_clean = rm -f $(__clean-files) |
| + | quiet_cmd_cleandir = CLEAN $(__clean-dirs) |
| + | cmd_cleandir = rm -rf $(__clean-dirs) |
| + | |
| + | |
| + | __clean: $(subdir-ymn) |
| + | ifneq ($(strip $(__clean-files)),) |
| + | +$(call cmd,clean) |
| + | endif |
| + | ifneq ($(strip $(__clean-dirs)),) |
| + | +$(call cmd,cleandir) |
| + | endif |
| + | ifneq ($(strip $(clean-rule)),) |
| + | +$(clean-rule) |
| + | endif |
| + | @: |
| + | |
| + | |
| + | # =========================================================================== |
| + | # Generic stuff |
| + | # =========================================================================== |
| + | |
| + | # Descending |
| + | # --------------------------------------------------------------------------- |
| + | |
| + | PHONY += $(subdir-ymn) |
| + | $(subdir-ymn): |
| + | $(Q)$(MAKE) $(clean)=$@ |
| + | |
| + | # If quiet is set, only print short version of command |
| + | |
| + | cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) |
| + | |
| + | |
| + | # Declare the contents of the .PHONY variable as phony. We keep that |
| + | # information in a variable se we can use it in if_changed and friends. |
| + | |
| + | .PHONY: $(PHONY) |