xref: /openbmc/u-boot/scripts/Makefile.clean (revision 6bd04bb4)
122433fc5SMasahiro Yamada# ==========================================================================
222433fc5SMasahiro Yamada# Cleaning up
322433fc5SMasahiro Yamada# ==========================================================================
422433fc5SMasahiro Yamada
522433fc5SMasahiro Yamadasrc := $(obj)
622433fc5SMasahiro Yamada
722433fc5SMasahiro YamadaPHONY := __clean
822433fc5SMasahiro Yamada__clean:
922433fc5SMasahiro Yamada
1022433fc5SMasahiro Yamada# Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir
1122433fc5SMasahiro Yamada# Usage:
1222433fc5SMasahiro Yamada# $(Q)$(MAKE) $(clean)=dir
1322433fc5SMasahiro Yamadaclean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
1422433fc5SMasahiro Yamada
1522433fc5SMasahiro Yamada# The filename Kbuild has precedence over Makefile
1622433fc5SMasahiro Yamadakbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
1722433fc5SMasahiro Yamadainclude $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile)
1822433fc5SMasahiro Yamada
1922433fc5SMasahiro Yamada# Figure out what we need to build from the various variables
2022433fc5SMasahiro Yamada# ==========================================================================
2122433fc5SMasahiro Yamada
2222433fc5SMasahiro Yamada__subdir-y	:= $(patsubst %/,%,$(filter %/, $(obj-y)))
2322433fc5SMasahiro Yamadasubdir-y	+= $(__subdir-y)
2422433fc5SMasahiro Yamada__subdir-m	:= $(patsubst %/,%,$(filter %/, $(obj-m)))
2522433fc5SMasahiro Yamadasubdir-m	+= $(__subdir-m)
2622433fc5SMasahiro Yamada__subdir-n	:= $(patsubst %/,%,$(filter %/, $(obj-n)))
2722433fc5SMasahiro Yamadasubdir-n	+= $(__subdir-n)
2822433fc5SMasahiro Yamada__subdir-	:= $(patsubst %/,%,$(filter %/, $(obj-)))
2922433fc5SMasahiro Yamadasubdir-		+= $(__subdir-)
3022433fc5SMasahiro Yamada
3122433fc5SMasahiro Yamada# Subdirectories we need to descend into
3222433fc5SMasahiro Yamada
3322433fc5SMasahiro Yamadasubdir-ym	:= $(sort $(subdir-y) $(subdir-m))
3422433fc5SMasahiro Yamadasubdir-ymn      := $(sort $(subdir-ym) $(subdir-n) $(subdir-))
3522433fc5SMasahiro Yamada
3622433fc5SMasahiro Yamada# Add subdir path
3722433fc5SMasahiro Yamada
3822433fc5SMasahiro Yamadasubdir-ymn	:= $(addprefix $(obj)/,$(subdir-ymn))
3922433fc5SMasahiro Yamada
40efcf8619SMasahiro Yamada# Temporal work-around for U-Boot
41efcf8619SMasahiro Yamada
42*6bd04bb4SMasahiro Yamadasubdir-ymn	:= $(foreach f, $(subdir-ymn), \
43*6bd04bb4SMasahiro Yamada				$(if $(wildcard $(srctree)/$f/Makefile),$f))
44efcf8619SMasahiro Yamada
4522433fc5SMasahiro Yamada# build a list of files to remove, usually relative to the current
4622433fc5SMasahiro Yamada# directory
4722433fc5SMasahiro Yamada
4822433fc5SMasahiro Yamada__clean-files	:= $(extra-y) $(always)                  \
4922433fc5SMasahiro Yamada		   $(targets) $(clean-files)             \
5022433fc5SMasahiro Yamada		   $(host-progs)                         \
5122433fc5SMasahiro Yamada		   $(hostprogs-y) $(hostprogs-m) $(hostprogs-)
5222433fc5SMasahiro Yamada
5322433fc5SMasahiro Yamada__clean-files   := $(filter-out $(no-clean-files), $(__clean-files))
5422433fc5SMasahiro Yamada
5522433fc5SMasahiro Yamada# as clean-files is given relative to the current directory, this adds
5622433fc5SMasahiro Yamada# a $(obj) prefix, except for absolute paths
5722433fc5SMasahiro Yamada
5822433fc5SMasahiro Yamada__clean-files   := $(wildcard                                               \
5922433fc5SMasahiro Yamada                   $(addprefix $(obj)/, $(filter-out /%, $(__clean-files))) \
6022433fc5SMasahiro Yamada		   $(filter /%, $(__clean-files)))
6122433fc5SMasahiro Yamada
6222433fc5SMasahiro Yamada# as clean-dirs is given relative to the current directory, this adds
6322433fc5SMasahiro Yamada# a $(obj) prefix, except for absolute paths
6422433fc5SMasahiro Yamada
6522433fc5SMasahiro Yamada__clean-dirs    := $(wildcard                                               \
6622433fc5SMasahiro Yamada                   $(addprefix $(obj)/, $(filter-out /%, $(clean-dirs)))    \
6722433fc5SMasahiro Yamada		   $(filter /%, $(clean-dirs)))
6822433fc5SMasahiro Yamada
6922433fc5SMasahiro Yamada# ==========================================================================
7022433fc5SMasahiro Yamada
7122433fc5SMasahiro Yamadaquiet_cmd_clean    = CLEAN   $(obj)
7222433fc5SMasahiro Yamada      cmd_clean    = rm -f $(__clean-files)
7322433fc5SMasahiro Yamadaquiet_cmd_cleandir = CLEAN   $(__clean-dirs)
7422433fc5SMasahiro Yamada      cmd_cleandir = rm -rf $(__clean-dirs)
7522433fc5SMasahiro Yamada
7622433fc5SMasahiro Yamada
7722433fc5SMasahiro Yamada__clean: $(subdir-ymn)
7822433fc5SMasahiro Yamadaifneq ($(strip $(__clean-files)),)
7922433fc5SMasahiro Yamada	+$(call cmd,clean)
8022433fc5SMasahiro Yamadaendif
8122433fc5SMasahiro Yamadaifneq ($(strip $(__clean-dirs)),)
8222433fc5SMasahiro Yamada	+$(call cmd,cleandir)
8322433fc5SMasahiro Yamadaendif
8422433fc5SMasahiro Yamadaifneq ($(strip $(clean-rule)),)
8522433fc5SMasahiro Yamada	+$(clean-rule)
8622433fc5SMasahiro Yamadaendif
8722433fc5SMasahiro Yamada	@:
8822433fc5SMasahiro Yamada
8922433fc5SMasahiro Yamada
9022433fc5SMasahiro Yamada# ===========================================================================
9122433fc5SMasahiro Yamada# Generic stuff
9222433fc5SMasahiro Yamada# ===========================================================================
9322433fc5SMasahiro Yamada
9422433fc5SMasahiro Yamada# Descending
9522433fc5SMasahiro Yamada# ---------------------------------------------------------------------------
9622433fc5SMasahiro Yamada
9722433fc5SMasahiro YamadaPHONY += $(subdir-ymn)
9822433fc5SMasahiro Yamada$(subdir-ymn):
9922433fc5SMasahiro Yamada	$(Q)$(MAKE) $(clean)=$@
10022433fc5SMasahiro Yamada
10122433fc5SMasahiro Yamada# If quiet is set, only print short version of command
10222433fc5SMasahiro Yamada
10322433fc5SMasahiro Yamadacmd = @$(if $($(quiet)cmd_$(1)),echo '  $($(quiet)cmd_$(1))' &&) $(cmd_$(1))
10422433fc5SMasahiro Yamada
10522433fc5SMasahiro Yamada
10622433fc5SMasahiro Yamada# Declare the contents of the .PHONY variable as phony.  We keep that
10722433fc5SMasahiro Yamada# information in a variable se we can use it in if_changed and friends.
10822433fc5SMasahiro Yamada
10922433fc5SMasahiro Yamada.PHONY: $(PHONY)
110