summaryrefslogtreecommitdiffstats
path: root/core/cleanspec.mk
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2012-10-11 11:53:04 -0700
committerYing Wang <wangying@google.com>2012-10-11 12:45:30 -0700
commit7240549748fd4e4879009524a6d01a4c26294568 (patch)
tree256c7b5d7d2d2013f5e8180eeb719d0087c93a03 /core/cleanspec.mk
parentfd671b2d5feb158fbcf6598ec1ae8d0654c70c35 (diff)
downloadbuild-7240549748fd4e4879009524a6d01a4c26294568.zip
build-7240549748fd4e4879009524a6d01a4c26294568.tar.gz
build-7240549748fd4e4879009524a6d01a4c26294568.tar.bz2
Convert to relative path for CleanSpec.mk
When using mm, which passes in absolute path, while in full build relative paths are used to encode clean steps. Change-Id: I3e39ce3125194589f9a464f27eef4a9c96fa06c1
Diffstat (limited to 'core/cleanspec.mk')
-rw-r--r--core/cleanspec.mk21
1 files changed, 20 insertions, 1 deletions
diff --git a/core/cleanspec.mk b/core/cleanspec.mk
index a3eb7cd..444ff98 100644
--- a/core/cleanspec.mk
+++ b/core/cleanspec.mk
@@ -63,8 +63,27 @@ INTERNAL_CLEAN_BUILD_VERSION := 6
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
+# Get the path of the top of the tree.
+# for example:
+# /home/bob/master/framework/base => /home/bob/master
+# See function gettop in build/envsetup.sh.
+define get-top-dir
+$(if $(1),$(if $(wildcard $(1)/build/core/envsetup.mk),$(1),$(strip \
+ $(call get-top-dir,$(patsubst %/,%,$(dir $(1)))))))
+endef
+
ifneq ($(ONE_SHOT_MAKEFILE),)
-cs_subdirs := $(dir $(ONE_SHOT_MAKEFILE))
+cs_subdirs := $(patsubst %/,%,$(dir $(ONE_SHOT_MAKEFILE)))
+abs_cs_subdirs := $(filter /%,$(cs_subdirs))
+ifneq ($(abs_cs_subdirs),)
+# Convert absolute path to relative path, e.g. when using mm.
+abs_top_path := $(call get-top-dir,$(word 1,$(abs_cs_subdirs)))
+cs_subdirs := $(filter-out /%,$(cs_subdirs)) \
+ $(patsubst $(abs_top_path)/%,%,$(abs_cs_subdirs))
+
+abs_top_path :=
+abs_cs_subdirs :=
+endif
else
cs_subdirs := .
endif