1 # SPDX
-License
-Identifier
: GPL
-2.0
2 # ==========================================================================
4 # ==========================================================================
6 src
:= $(srcroot
)/$(obj
)
11 include
$(srctree
)/scripts
/Kbuild
.include
12 include
$(kbuild
-file
)
14 # Figure out what we need to build
from the various variables
15 # ==========================================================================
17 subdir
-ymn
:= $(sort
$(subdir
-y
) $(subdir
-m
) $(subdir
-) \
18 $(patsubst
%/,%, $(filter
%/, $(obj
-y
) $(obj
-m
) $(obj
-))))
22 subdir
-ymn
:= $(addprefix
$(obj
)/,$(subdir
-ymn
))
24 # build a list
of files to remove
, usually relative to the current
28 $(clean
-files
) $(targets
) $(hostprogs
) $(userprogs
) \
29 $(extra
-y
) $(extra
-m
) $(extra
-) \
30 $(always
-y
) $(always
-m
) $(always
-) \
31 $(hostprogs
-always
-y
) $(hostprogs
-always
-m
) $(hostprogs
-always
-) \
32 $(userprogs
-always
-y
) $(userprogs
-always
-m
) $(userprogs
-always
-)
34 __clean
-files
:= $(filter
-out
$(no
-clean
-files
), $(__clean
-files
))
36 __clean
-files
:= $(wildcard
$(addprefix
$(obj
)/, $(__clean
-files
)))
38 # ==========================================================================
40 # To make this rule robust against
"Argument list too long" error
,
41 # remove
$(obj
)/ prefix
, and restore it by a shell command
.
42 quiet_cmd_clean
= CLEAN
$(obj
)
43 cmd_clean
= printf
'$(obj
)/%s
' $(patsubst
$(obj
)/%,%,$(__clean
-files
)) | xargs rm
-rf
45 __clean
: $(subdir
-ymn
)
46 ifneq
($(strip
$(__clean
-files
)),)
52 # ===========================================================================
54 # ===========================================================================
57 # ---------------------------------------------------------------------------
59 PHONY
+= $(subdir
-ymn
)
61 $(Q
)$(MAKE
) $(clean
)=$@