xref: /openbmc/linux/scripts/Makefile.clean (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
21da177e4SLinus Torvalds# ==========================================================================
31da177e4SLinus Torvalds# Cleaning up
41da177e4SLinus Torvalds# ==========================================================================
51da177e4SLinus Torvalds
61da177e4SLinus Torvaldssrc := $(obj)
71da177e4SLinus Torvalds
84f193362SPaul SmithPHONY := __clean
91da177e4SLinus Torvalds__clean:
101da177e4SLinus Torvalds
113204a7fbSMasahiro Yamadainclude $(srctree)/scripts/Kbuild.include
12a2430b25SMasahiro Yamadainclude $(kbuild-file)
131da177e4SLinus Torvalds
141da177e4SLinus Torvalds# Figure out what we need to build from the various variables
151da177e4SLinus Torvalds# ==========================================================================
161da177e4SLinus Torvalds
174ca76945SMasahiro Yamadasubdir-ymn := $(sort $(subdir-y) $(subdir-m) $(subdir-) \
184ca76945SMasahiro Yamada		$(patsubst %/,%, $(filter %/, $(obj-y) $(obj-m) $(obj-))))
191da177e4SLinus Torvalds
201da177e4SLinus Torvalds# Add subdir path
211da177e4SLinus Torvalds
221da177e4SLinus Torvaldssubdir-ymn	:= $(addprefix $(obj)/,$(subdir-ymn))
231da177e4SLinus Torvalds
243156fd05SRobert P. J. Day# build a list of files to remove, usually relative to the current
251da177e4SLinus Torvalds# directory
261da177e4SLinus Torvalds
27faabed29SMasahiro Yamada__clean-files	:= \
28faabed29SMasahiro Yamada	$(clean-files) $(targets) $(hostprogs) $(userprogs) \
29faabed29SMasahiro Yamada	$(extra-y) $(extra-m) $(extra-) \
30faabed29SMasahiro Yamada	$(always-y) $(always-m) $(always-) \
31faabed29SMasahiro Yamada	$(hostprogs-always-y) $(hostprogs-always-m) $(hostprogs-always-) \
32faabed29SMasahiro Yamada	$(userprogs-always-y) $(userprogs-always-m) $(userprogs-always-)
33faabed29SMasahiro Yamada
34ef8ff89bSMichal Marek__clean-files   := $(filter-out $(no-clean-files), $(__clean-files))
35ef8ff89bSMichal Marek
368d613a1dSMasahiro Yamada__clean-files   := $(wildcard $(addprefix $(obj)/, $(__clean-files)))
371da177e4SLinus Torvalds
381da177e4SLinus Torvalds# ==========================================================================
391da177e4SLinus Torvalds
40*36029060SMasahiro Yamada# To make this rule robust against "Argument list too long" error,
41*36029060SMasahiro Yamada# remove $(obj)/ prefix, and restore it by a shell command.
421da177e4SLinus Torvaldsquiet_cmd_clean = CLEAN   $(obj)
43*36029060SMasahiro Yamada      cmd_clean = printf '$(obj)/%s ' $(patsubst $(obj)/%,%,$(__clean-files)) | xargs rm -rf
441da177e4SLinus Torvalds
451da177e4SLinus Torvalds__clean: $(subdir-ymn)
461da177e4SLinus Torvaldsifneq ($(strip $(__clean-files)),)
47687ac1faSMasahiro Yamada	$(call cmd,clean)
481da177e4SLinus Torvaldsendif
491da177e4SLinus Torvalds	@:
501da177e4SLinus Torvalds
511da177e4SLinus Torvalds
521da177e4SLinus Torvalds# ===========================================================================
531da177e4SLinus Torvalds# Generic stuff
541da177e4SLinus Torvalds# ===========================================================================
551da177e4SLinus Torvalds
561da177e4SLinus Torvalds# Descending
571da177e4SLinus Torvalds# ---------------------------------------------------------------------------
581da177e4SLinus Torvalds
594f193362SPaul SmithPHONY += $(subdir-ymn)
601da177e4SLinus Torvalds$(subdir-ymn):
611da177e4SLinus Torvalds	$(Q)$(MAKE) $(clean)=$@
621da177e4SLinus Torvalds
634f193362SPaul Smith.PHONY: $(PHONY)
64