2005-04-17 02:20:36 +04:00
# ==========================================================================
# Cleaning up
# ==========================================================================
src := $( obj)
2006-03-06 01:14:10 +03:00
PHONY := __clean
2005-04-17 02:20:36 +04:00
__clean :
2014-11-26 13:31:13 +03:00
i n c l u d e s c r i p t s / K b u i l d . i n c l u d e
2005-07-26 02:41:12 +04:00
2005-07-26 00:26:04 +04:00
# The filename Kbuild has precedence over Makefile
2005-07-28 00:11:01 +04:00
kbuild-dir := $( if $( filter /%,$( src) ) ,$( src) ,$( srctree) /$( src) )
i n c l u d e $( if $ ( wildcard $ ( kbuild -dir ) /Kbuild ) , $ ( kbuild -dir ) /Kbuild , $ ( kbuild -dir ) /Makefile )
2005-04-17 02:20:36 +04:00
# Figure out what we need to build from the various variables
# ==========================================================================
__subdir-y := $( patsubst %/,%,$( filter %/, $( obj-y) ) )
subdir-y += $( __subdir-y)
__subdir-m := $( patsubst %/,%,$( filter %/, $( obj-m) ) )
subdir-m += $( __subdir-m)
__subdir- := $( patsubst %/,%,$( filter %/, $( obj-) ) )
subdir- += $( __subdir-)
# Subdirectories we need to descend into
subdir-ym := $( sort $( subdir-y) $( subdir-m) )
2014-09-09 14:26:21 +04:00
subdir-ymn := $( sort $( subdir-ym) $( subdir-) )
2005-04-17 02:20:36 +04:00
# Add subdir path
subdir-ymn := $( addprefix $( obj) /,$( subdir-ymn) )
2008-02-18 12:48:20 +03:00
# build a list of files to remove, usually relative to the current
2005-04-17 02:20:36 +04:00
# directory
2014-06-06 05:43:55 +04:00
__clean-files := $( extra-y) $( extra-m) $( extra-) \
$( always) $( targets) $( clean-files) \
2005-04-17 02:20:36 +04:00
$( host-progs) \
2016-05-24 01:08:25 +03:00
$( hostprogs-y) $( hostprogs-m) $( hostprogs-) \
$( hostlibs-y) $( hostlibs-m) $( hostlibs-) \
$( hostcxxlibs-y) $( hostcxxlibs-m)
2005-04-17 02:20:36 +04:00
2010-03-09 18:00:20 +03:00
__clean-files := $( filter-out $( no-clean-files) , $( __clean-files) )
2014-12-31 18:29:35 +03:00
# clean-files is given relative to the current directory, unless it
# starts with $(objtree)/ (which means "./", so do not add "./" unless
# you want to delete a file from the toplevel object directory).
2005-04-17 02:20:36 +04:00
__clean-files := $( wildcard \
2014-12-31 18:29:35 +03:00
$( addprefix $( obj) /, $( filter-out $( objtree) /%, $( __clean-files) ) ) \
$( filter $( objtree) /%, $( __clean-files) ) )
2005-04-17 02:20:36 +04:00
2014-12-31 18:29:35 +03:00
# same as clean-files
2005-04-17 02:20:36 +04:00
__clean-dirs := $( wildcard \
2014-12-31 18:29:35 +03:00
$( addprefix $( obj) /, $( filter-out $( objtree) /%, $( clean-dirs) ) ) \
$( filter $( objtree) /%, $( clean-dirs) ) )
2005-04-17 02:20:36 +04:00
# ==========================================================================
quiet_cmd_clean = CLEAN $( obj)
cmd_clean = rm -f $( __clean-files)
quiet_cmd_cleandir = CLEAN $( __clean-dirs)
cmd_cleandir = rm -rf $( __clean-dirs)
__clean : $( subdir -ymn )
i f n e q ( $( strip $ ( __clean -files ) ) , )
+$( call cmd,clean)
e n d i f
i f n e q ( $( strip $ ( __clean -dirs ) ) , )
+$( call cmd,cleandir)
e n d i f
@:
# ===========================================================================
# Generic stuff
# ===========================================================================
# Descending
# ---------------------------------------------------------------------------
2006-03-06 01:14:10 +03:00
PHONY += $( subdir-ymn)
2005-04-17 02:20:36 +04:00
$(subdir-ymn) :
$( Q) $( MAKE) $( clean) = $@
2006-03-06 01:14:10 +03:00
# Declare the contents of the .PHONY variable as phony. We keep that
# information in a variable se we can use it in if_changed and friends.
.PHONY : $( PHONY )