xref: /openbmc/u-boot/scripts/Makefile.clean (revision 22433fc5)
1*22433fc5SMasahiro Yamada# ==========================================================================
2*22433fc5SMasahiro Yamada# Cleaning up
3*22433fc5SMasahiro Yamada# ==========================================================================
4*22433fc5SMasahiro Yamada
5*22433fc5SMasahiro Yamadasrc := $(obj)
6*22433fc5SMasahiro Yamada
7*22433fc5SMasahiro YamadaPHONY := __clean
8*22433fc5SMasahiro Yamada__clean:
9*22433fc5SMasahiro Yamada
10*22433fc5SMasahiro Yamada# Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir
11*22433fc5SMasahiro Yamada# Usage:
12*22433fc5SMasahiro Yamada# $(Q)$(MAKE) $(clean)=dir
13*22433fc5SMasahiro Yamadaclean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
14*22433fc5SMasahiro Yamada
15*22433fc5SMasahiro Yamada# The filename Kbuild has precedence over Makefile
16*22433fc5SMasahiro Yamadakbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
17*22433fc5SMasahiro Yamadainclude $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile)
18*22433fc5SMasahiro Yamada
19*22433fc5SMasahiro Yamada# Figure out what we need to build from the various variables
20*22433fc5SMasahiro Yamada# ==========================================================================
21*22433fc5SMasahiro Yamada
22*22433fc5SMasahiro Yamada__subdir-y	:= $(patsubst %/,%,$(filter %/, $(obj-y)))
23*22433fc5SMasahiro Yamadasubdir-y	+= $(__subdir-y)
24*22433fc5SMasahiro Yamada__subdir-m	:= $(patsubst %/,%,$(filter %/, $(obj-m)))
25*22433fc5SMasahiro Yamadasubdir-m	+= $(__subdir-m)
26*22433fc5SMasahiro Yamada__subdir-n	:= $(patsubst %/,%,$(filter %/, $(obj-n)))
27*22433fc5SMasahiro Yamadasubdir-n	+= $(__subdir-n)
28*22433fc5SMasahiro Yamada__subdir-	:= $(patsubst %/,%,$(filter %/, $(obj-)))
29*22433fc5SMasahiro Yamadasubdir-		+= $(__subdir-)
30*22433fc5SMasahiro Yamada
31*22433fc5SMasahiro Yamada# Subdirectories we need to descend into
32*22433fc5SMasahiro Yamada
33*22433fc5SMasahiro Yamadasubdir-ym	:= $(sort $(subdir-y) $(subdir-m))
34*22433fc5SMasahiro Yamadasubdir-ymn      := $(sort $(subdir-ym) $(subdir-n) $(subdir-))
35*22433fc5SMasahiro Yamada
36*22433fc5SMasahiro Yamada# Add subdir path
37*22433fc5SMasahiro Yamada
38*22433fc5SMasahiro Yamadasubdir-ymn	:= $(addprefix $(obj)/,$(subdir-ymn))
39*22433fc5SMasahiro Yamada
40*22433fc5SMasahiro Yamada# build a list of files to remove, usually relative to the current
41*22433fc5SMasahiro Yamada# directory
42*22433fc5SMasahiro Yamada
43*22433fc5SMasahiro Yamada__clean-files	:= $(extra-y) $(always)                  \
44*22433fc5SMasahiro Yamada		   $(targets) $(clean-files)             \
45*22433fc5SMasahiro Yamada		   $(host-progs)                         \
46*22433fc5SMasahiro Yamada		   $(hostprogs-y) $(hostprogs-m) $(hostprogs-)
47*22433fc5SMasahiro Yamada
48*22433fc5SMasahiro Yamada__clean-files   := $(filter-out $(no-clean-files), $(__clean-files))
49*22433fc5SMasahiro Yamada
50*22433fc5SMasahiro Yamada# as clean-files is given relative to the current directory, this adds
51*22433fc5SMasahiro Yamada# a $(obj) prefix, except for absolute paths
52*22433fc5SMasahiro Yamada
53*22433fc5SMasahiro Yamada__clean-files   := $(wildcard                                               \
54*22433fc5SMasahiro Yamada                   $(addprefix $(obj)/, $(filter-out /%, $(__clean-files))) \
55*22433fc5SMasahiro Yamada		   $(filter /%, $(__clean-files)))
56*22433fc5SMasahiro Yamada
57*22433fc5SMasahiro Yamada# as clean-dirs is given relative to the current directory, this adds
58*22433fc5SMasahiro Yamada# a $(obj) prefix, except for absolute paths
59*22433fc5SMasahiro Yamada
60*22433fc5SMasahiro Yamada__clean-dirs    := $(wildcard                                               \
61*22433fc5SMasahiro Yamada                   $(addprefix $(obj)/, $(filter-out /%, $(clean-dirs)))    \
62*22433fc5SMasahiro Yamada		   $(filter /%, $(clean-dirs)))
63*22433fc5SMasahiro Yamada
64*22433fc5SMasahiro Yamada# ==========================================================================
65*22433fc5SMasahiro Yamada
66*22433fc5SMasahiro Yamadaquiet_cmd_clean    = CLEAN   $(obj)
67*22433fc5SMasahiro Yamada      cmd_clean    = rm -f $(__clean-files)
68*22433fc5SMasahiro Yamadaquiet_cmd_cleandir = CLEAN   $(__clean-dirs)
69*22433fc5SMasahiro Yamada      cmd_cleandir = rm -rf $(__clean-dirs)
70*22433fc5SMasahiro Yamada
71*22433fc5SMasahiro Yamada
72*22433fc5SMasahiro Yamada__clean: $(subdir-ymn)
73*22433fc5SMasahiro Yamadaifneq ($(strip $(__clean-files)),)
74*22433fc5SMasahiro Yamada	+$(call cmd,clean)
75*22433fc5SMasahiro Yamadaendif
76*22433fc5SMasahiro Yamadaifneq ($(strip $(__clean-dirs)),)
77*22433fc5SMasahiro Yamada	+$(call cmd,cleandir)
78*22433fc5SMasahiro Yamadaendif
79*22433fc5SMasahiro Yamadaifneq ($(strip $(clean-rule)),)
80*22433fc5SMasahiro Yamada	+$(clean-rule)
81*22433fc5SMasahiro Yamadaendif
82*22433fc5SMasahiro Yamada	@:
83*22433fc5SMasahiro Yamada
84*22433fc5SMasahiro Yamada
85*22433fc5SMasahiro Yamada# ===========================================================================
86*22433fc5SMasahiro Yamada# Generic stuff
87*22433fc5SMasahiro Yamada# ===========================================================================
88*22433fc5SMasahiro Yamada
89*22433fc5SMasahiro Yamada# Descending
90*22433fc5SMasahiro Yamada# ---------------------------------------------------------------------------
91*22433fc5SMasahiro Yamada
92*22433fc5SMasahiro YamadaPHONY += $(subdir-ymn)
93*22433fc5SMasahiro Yamada$(subdir-ymn):
94*22433fc5SMasahiro Yamada	$(Q)$(MAKE) $(clean)=$@
95*22433fc5SMasahiro Yamada
96*22433fc5SMasahiro Yamada# If quiet is set, only print short version of command
97*22433fc5SMasahiro Yamada
98*22433fc5SMasahiro Yamadacmd = @$(if $($(quiet)cmd_$(1)),echo '  $($(quiet)cmd_$(1))' &&) $(cmd_$(1))
99*22433fc5SMasahiro Yamada
100*22433fc5SMasahiro Yamada
101*22433fc5SMasahiro Yamada# Declare the contents of the .PHONY variable as phony.  We keep that
102*22433fc5SMasahiro Yamada# information in a variable se we can use it in if_changed and friends.
103*22433fc5SMasahiro Yamada
104*22433fc5SMasahiro Yamada.PHONY: $(PHONY)
105