Run clean steps in only given paths when using mm/mmm

To speed up mm/mmm start time.
At the same time, we should copy over the other clean steps.

(cherry-pick of 6ea58cb3dc564ce112b28f1a7c6936317168d931.)

Bug: 7186768
Change-Id: I158b0d7e4ecaa773ec3a336cd326e27ee8c26a88
diff --git a/core/cleanbuild.mk b/core/cleanbuild.mk
index e6db5cb..1b662b9 100644
--- a/core/cleanbuild.mk
+++ b/core/cleanbuild.mk
@@ -78,6 +78,10 @@
     $(info Clean step: $(INTERNAL_CLEAN_STEP.$(step))) \
     $(shell $(INTERNAL_CLEAN_STEP.$(step))) \
    )
+  # If we are running mm/mmm, we should copy over the other clean steps too.
+  ifneq ($(ONE_SHOT_MAKEFILE),)
+    INTERNAL_CLEAN_STEPS := $(strip $(CURRENT_CLEAN_STEPS) $(steps))
+  endif
   steps :=
 endif
 CURRENT_CLEAN_BUILD_VERSION :=
diff --git a/core/cleanspec.mk b/core/cleanspec.mk
index d4a8eed..a3eb7cd 100644
--- a/core/cleanspec.mk
+++ b/core/cleanspec.mk
@@ -63,7 +63,13 @@
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
 
+ifneq ($(ONE_SHOT_MAKEFILE),)
+cs_subdirs := $(dir $(ONE_SHOT_MAKEFILE))
+else
+cs_subdirs := .
+endif
 subdir_cleanspecs := \
-    $(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git . CleanSpec.mk)
+    $(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(cs_subdirs) CleanSpec.mk)
 include $(subdir_cleanspecs)
+cs_subdirs :=
 subdir_cleanspecs :=