OSDN Git Service

Convert to relative path for CleanSpec.mk
authorYing Wang <wangying@google.com>
Thu, 11 Oct 2012 18:53:04 +0000 (11:53 -0700)
committerYing Wang <wangying@google.com>
Thu, 11 Oct 2012 19:45:30 +0000 (12:45 -0700)
When using mm, which passes in absolute path, while in full build relative
paths are used to encode clean steps.

Change-Id: I3e39ce3125194589f9a464f27eef4a9c96fa06c1

core/cleanspec.mk

index a3eb7cd..444ff98 100644 (file)
@@ -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