| # ========================================================================== |
| # Cleaning up |
| # ========================================================================== |
| |
| src := $(obj) |
| |
| .PHONY: __clean |
| __clean: |
| |
| include $(obj)/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)) |
| __clean-files := $(wildcard $(addprefix $(obj)/, \ |
| $(extra-y) $(EXTRA_TARGETS) $(always) $(host-progs) \ |
| $(targets) $(clean-files))) |
| |
| # ========================================================================== |
| |
| quiet_cmd_clean = CLEAN $(obj) |
| cmd_clean = rm -f $(__clean-files); $(clean-rule) |
| |
| __clean: $(subdir-ymn) |
| ifneq ($(strip $(__clean-files) $(clean-rule)),) |
| +$(call cmd,clean) |
| else |
| @: |
| 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)) |
| |
| # Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir |
| # Usage: |
| # $(Q)$(MAKE) $(clean)=dir |
| clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj |