kbuild: fix bugs in cleaning targets

"make clean", "make clobber", "make mrproper" and "make distclean"
missed to clean-up some files when they were run with
O=<some_dir> option.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Reported-by: Wolfgang Denk <wd@denx.de>
diff --git a/Makefile b/Makefile
index 341f336..e5f5a8c 100644
--- a/Makefile
+++ b/Makefile
@@ -1173,7 +1173,7 @@
 clean: rm-dirs  := $(CLEAN_DIRS)
 clean: rm-files := $(CLEAN_FILES)
 
-clean-dirs	:= $(foreach f,$(u-boot-alldirs),$(if $(wildcard $f/Makefile),$f))
+clean-dirs	:= $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f))
 
 clean-dirs      := $(addprefix _clean_, $(clean-dirs) doc/DocBook)
 
diff --git a/dts/Makefile b/dts/Makefile
index 9907463f..e59550c 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -44,4 +44,4 @@
 clean-files := dt.dtb.S
 
 # Let clean descend into dts directories
-subdir- += ../arch/*/dts
+subdir- += ../arch/arm/dts ../arch/microblaze/dts ../arch/sandbox/dts ../arch/x86/dts
diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean
index 5cd0f51..d6dcd47 100644
--- a/scripts/Makefile.clean
+++ b/scripts/Makefile.clean
@@ -39,7 +39,8 @@
 
 # Temporal work-around for U-Boot
 
-subdir-ymn	:= $(foreach f, $(subdir-ymn), $(if $(wildcard $f/Makefile),$f))
+subdir-ymn	:= $(foreach f, $(subdir-ymn), \
+				$(if $(wildcard $(srctree)/$f/Makefile),$f))
 
 # build a list of files to remove, usually relative to the current
 # directory