# SPDX-License-Identifier: GPL-2.0
# ==========================================================================
# Cleaning up
# ==========================================================================

src := $(obj)

PHONY := __clean
__clean:

include $(srctree)/scripts/Kbuild.include
include $(kbuild-file)

# Figure out what we need to build from the various variables
# ==========================================================================

subdir-ymn := $(sort $(subdir-y) $(subdir-m) $(subdir-) \
		$(patsubst %/,%, $(filter %/, $(obj-y) $(obj-m) $(obj-))))

# Add subdir path

subdir-ymn	:= $(addprefix $(obj)/,$(subdir-ymn))

# build a list of files to remove, usually relative to the current
# directory

__clean-files	:= \
	$(clean-files) $(targets) $(hostprogs) $(userprogs) \
	$(extra-y) $(extra-m) $(extra-) \
	$(always-y) $(always-m) $(always-) \
	$(hostprogs-always-y) $(hostprogs-always-m) $(hostprogs-always-) \
	$(userprogs-always-y) $(userprogs-always-m) $(userprogs-always-)

__clean-files   := $(filter-out $(no-clean-files), $(__clean-files))

__clean-files   := $(wildcard $(addprefix $(obj)/, $(__clean-files)))

# ==========================================================================

# To make this rule robust against "Argument list too long" error,
# remove $(obj)/ prefix, and restore it by a shell command.
quiet_cmd_clean = CLEAN   $(obj)
      cmd_clean = printf '$(obj)/%s ' $(patsubst $(obj)/%,%,$(__clean-files)) | xargs rm -rf

__clean: $(subdir-ymn)
ifneq ($(strip $(__clean-files)),)
	$(call cmd,clean)
endif
	@:


# ===========================================================================
# Generic stuff
# ===========================================================================

# Descending
# ---------------------------------------------------------------------------

PHONY += $(subdir-ymn)
$(subdir-ymn):
	$(Q)$(MAKE) $(clean)=$@

.PHONY: $(PHONY)
