1 # ==========================================================================
3 # ==========================================================================
10 # Shorthand for
$(Q
)$(MAKE
) scripts
/Makefile
.clean obj
=dir
12 # $(Q
)$(MAKE
) $(clean
)=dir
13 clean
:= -f
$(if $(KBUILD_SRC
),$(srctree
)/)scripts
/Makefile
.clean obj
15 # The filename Kbuild has precedence over Makefile
16 kbuild
-dir
:= $(if $(filter
/%,$(src
)),$(src
),$(srctree
)/$(src
))
17 include
$(if $(wildcard
$(kbuild
-dir
)/Kbuild
), $(kbuild
-dir
)/Kbuild
, $(kbuild
-dir
)/Makefile
)
19 # Figure out what we need to build
from the various variables
20 # ==========================================================================
22 __subdir
-y
:= $(patsubst
%/,%,$(filter
%/, $(obj
-y
)))
23 subdir
-y
+= $(__subdir
-y
)
24 __subdir
-m
:= $(patsubst
%/,%,$(filter
%/, $(obj
-m
)))
25 subdir
-m
+= $(__subdir
-m
)
26 __subdir
-n
:= $(patsubst
%/,%,$(filter
%/, $(obj
-n
)))
27 subdir
-n
+= $(__subdir
-n
)
28 __subdir
- := $(patsubst
%/,%,$(filter
%/, $(obj
-)))
29 subdir
- += $(__subdir
-)
31 # Subdirectories we need to descend into
33 subdir
-ym
:= $(sort
$(subdir
-y
) $(subdir
-m
))
34 subdir
-ymn
:= $(sort
$(subdir
-ym
) $(subdir
-n
) $(subdir
-))
38 subdir
-ymn
:= $(addprefix
$(obj
)/,$(subdir
-ymn
))
40 # build a list
of files to remove
, usually relative to the current
43 __clean
-files
:= $(extra
-y
) $(always
) \
44 $(targets
) $(clean
-files
) \
46 $(hostprogs
-y
) $(hostprogs
-m
) $(hostprogs
-)
48 __clean
-files
:= $(filter
-out
$(no
-clean
-files
), $(__clean
-files
))
50 # clean
-files is given relative to the current directory
, unless it
51 # starts
with $(objtree
)/ (which means
"./", so do not add
"./" unless
52 # you want to delete a file
from the toplevel object directory
).
54 __clean
-files
:= $(wildcard
\
55 $(addprefix
$(obj
)/, $(filter
-out
$(objtree
)/%, $(__clean
-files
))) \
56 $(filter
$(objtree
)/%, $(__clean
-files
)))
60 __clean
-dirs
:= $(wildcard
\
61 $(addprefix
$(obj
)/, $(filter
-out
$(objtree
)/%, $(clean
-dirs
))) \
62 $(filter
$(objtree
)/%, $(clean
-dirs
)))
64 # ==========================================================================
66 quiet_cmd_clean
= CLEAN
$(obj
)
67 cmd_clean
= rm
-f
$(__clean
-files
)
68 quiet_cmd_cleandir
= CLEAN
$(__clean
-dirs
)
69 cmd_cleandir
= rm
-rf
$(__clean
-dirs
)
72 __clean
: $(subdir
-ymn
)
73 ifneq
($(strip
$(__clean
-files
)),)
76 ifneq
($(strip
$(__clean
-dirs
)),)
79 ifneq
($(strip
$(clean
-rule
)),)
85 # ===========================================================================
87 # ===========================================================================
90 # ---------------------------------------------------------------------------
92 PHONY
+= $(subdir
-ymn
)
94 $(Q
)$(MAKE
) $(clean
)=$@
96 # If quiet is set
, only print short version
of command
98 cmd
= @$(if $($(quiet
)cmd_
$(1)),echo
' $($(quiet
)cmd_
$(1))' &&) $(cmd_
$(1))
101 # Declare the contents
of the
.PHONY variable as phony
. We keep that
102 # information
in a variable se we can use it
in if_changed and friends
.