Allow packages to place manifest files in any directory

via a new definition LOCAL_ABS_MANIFEST_FILE.  The existing
LOCAL_MANIFEST_FILE variable will also be supported.

(Necessary if manifests are being programmatically generated in the
intermediates directory)

Change-Id: I77a8eb1b8040b966b944464281d00c161ff34d3c
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index c6fd06b..857cdc7 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -104,6 +104,7 @@
 LOCAL_PROGUARD_FLAG_FILES:=
 LOCAL_EMMA_COVERAGE_FILTER:=
 LOCAL_WARNINGS_ENABLE:=
+LOCAL_FULL_MANIFEST_FILE:=
 LOCAL_MANIFEST_FILE:=
 LOCAL_RENDERSCRIPT_INCLUDES:=
 LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE:=
diff --git a/core/package.mk b/core/package.mk
index 52d52a2..def715f 100644
--- a/core/package.mk
+++ b/core/package.mk
@@ -65,6 +65,12 @@
 LOCAL_MANIFEST_FILE := AndroidManifest.xml
 endif
 
+# If you need to put the MANIFEST_FILE outside of LOCAL_PATH
+# you can use FULL_MANIFEST_FILE
+ifeq ($(strip $(LOCAL_FULL_MANIFEST_FILE)),)
+LOCAL_FULL_MANIFEST_FILE := $(LOCAL_PATH)/$(LOCAL_MANIFEST_FILE)
+endif
+
 ifneq ($(strip $(LOCAL_MODULE_CLASS)),)
 $(error $(LOCAL_PATH): Package modules may not set LOCAL_MODULE_CLASS)
 endif
@@ -171,7 +177,7 @@
   LOCAL_SDK_RES_VERSION:=$(LOCAL_SDK_VERSION)
 endif
 
-full_android_manifest := $(LOCAL_PATH)/$(LOCAL_MANIFEST_FILE)
+full_android_manifest := $(LOCAL_FULL_MANIFEST_FILE)
 $(LOCAL_INTERMEDIATE_TARGETS): \
     PRIVATE_ANDROID_MANIFEST := $(full_android_manifest)
 ifneq (,$(filter-out current, $(LOCAL_SDK_VERSION)))