162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci# ========================================================================== 362306a36Sopenharmony_ci# Cleaning up 462306a36Sopenharmony_ci# ========================================================================== 562306a36Sopenharmony_ci 662306a36Sopenharmony_cisrc := $(obj) 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciPHONY := __clean 962306a36Sopenharmony_ci__clean: 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciinclude $(srctree)/scripts/Kbuild.include 1262306a36Sopenharmony_ciinclude $(kbuild-file) 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci# Figure out what we need to build from the various variables 1562306a36Sopenharmony_ci# ========================================================================== 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cisubdir-ymn := $(sort $(subdir-y) $(subdir-m) $(subdir-) \ 1862306a36Sopenharmony_ci $(patsubst %/,%, $(filter %/, $(obj-y) $(obj-m) $(obj-)))) 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci# Add subdir path 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cisubdir-ymn := $(addprefix $(obj)/,$(subdir-ymn)) 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci# build a list of files to remove, usually relative to the current 2562306a36Sopenharmony_ci# directory 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci__clean-files := \ 2862306a36Sopenharmony_ci $(clean-files) $(targets) $(hostprogs) $(userprogs) \ 2962306a36Sopenharmony_ci $(extra-y) $(extra-m) $(extra-) \ 3062306a36Sopenharmony_ci $(always-y) $(always-m) $(always-) \ 3162306a36Sopenharmony_ci $(hostprogs-always-y) $(hostprogs-always-m) $(hostprogs-always-) \ 3262306a36Sopenharmony_ci $(userprogs-always-y) $(userprogs-always-m) $(userprogs-always-) 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci__clean-files := $(filter-out $(no-clean-files), $(__clean-files)) 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci__clean-files := $(wildcard $(addprefix $(obj)/, $(__clean-files))) 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci# ========================================================================== 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci# To make this rule robust against "Argument list too long" error, 4162306a36Sopenharmony_ci# remove $(obj)/ prefix, and restore it by a shell command. 4262306a36Sopenharmony_ciquiet_cmd_clean = CLEAN $(obj) 4362306a36Sopenharmony_ci cmd_clean = printf '$(obj)/%s ' $(patsubst $(obj)/%,%,$(__clean-files)) | xargs rm -rf 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci__clean: $(subdir-ymn) 4662306a36Sopenharmony_ciifneq ($(strip $(__clean-files)),) 4762306a36Sopenharmony_ci $(call cmd,clean) 4862306a36Sopenharmony_ciendif 4962306a36Sopenharmony_ci @: 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci# =========================================================================== 5362306a36Sopenharmony_ci# Generic stuff 5462306a36Sopenharmony_ci# =========================================================================== 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci# Descending 5762306a36Sopenharmony_ci# --------------------------------------------------------------------------- 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ciPHONY += $(subdir-ymn) 6062306a36Sopenharmony_ci$(subdir-ymn): 6162306a36Sopenharmony_ci $(Q)$(MAKE) $(clean)=$@ 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci.PHONY: $(PHONY) 64