Snap for 4832339 from 3a1dcff97b22cc566fc33b655d595fcd61dbb42e to pi-release

Change-Id: I1e9d12f483d7f384e06723b434d4172c878b54de
diff --git a/build/Android.mk b/build/Android.mk
index eaa691a..db55681 100644
--- a/build/Android.mk
+++ b/build/Android.mk
@@ -87,6 +87,31 @@
 ALL_SDK_FILES += $(android_jar_full_target)
 ALL_SDK_FILES += $(android_jar_src_target)
 
+# ============ Metalava SDK jar file of stubs ============
+sdk_stub_name := metalava_android_stubs_current
+stub_timestamp := $(OUT_DOCS)/metalava-api-stubs-timestamp
+include $(LOCAL_PATH)/build_android_stubs.mk
+
+.PHONY: metalava_android_stubs
+metalava_android_stubs: $(full_target) $(full_src_target)
+
+# android.jar is what we put in the SDK package.
+android_jar_intermediates := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/metalava_android_jar_intermediates
+android_jar_full_target := $(android_jar_intermediates)/metalava-android.jar
+android_jar_src_target := $(android_jar_intermediates)/metalava-android-stubs-src.jar
+
+$(android_jar_full_target): $(full_target)
+	@echo Package SDK Stubs: $@
+	$(copy-file-to-target)
+
+$(android_jar_src_target): $(full_src_target)
+	@echo Package SDK Stubs Source: $@
+	$(hide)mkdir -p $(dir $@)
+	$(hide)$(ACP) $< $@
+
+ALL_SDK_FILES += $(android_jar_full_target)
+ALL_SDK_FILES += $(android_jar_src_target)
+
 # ====================================================
 
 # The uiautomator stubs
@@ -166,3 +191,26 @@
 
 # Build and store the android_test.jar.
 $(call dist-for-goals,sdk win_sdk,$(full_target):android_test.jar)
+
+# ============ Metalava System SDK ============
+sdk_stub_name := metalava_android_system_stubs_current
+stub_timestamp := $(OUT_DOCS)/metalava-system-api-stubs-timestamp
+include $(LOCAL_PATH)/build_android_stubs.mk
+
+.PHONY: metalava_android_system_stubs
+metalava_android_system_stubs: $(full_target)
+
+# Build and store the android_system.jar.
+$(call dist-for-goals,sdk win_sdk,$(full_target):metalava_android_system.jar)
+
+# ============ Metalava Test SDK ============
+sdk_stub_name := metalava_android_test_stubs_current
+stub_timestamp := $(OUT_DOCS)/metalava-test-api-stubs-timestamp
+include $(LOCAL_PATH)/build_android_stubs.mk
+
+.PHONY: metalava_android_test_stubs
+metalava_android_test_stubs: $(full_target)
+
+# Build and store the android_test.jar.
+$(call dist-for-goals,sdk win_sdk,$(full_target):metalava_android_test.jar)
+
diff --git a/build/build_android_stubs.mk b/build/build_android_stubs.mk
index 144bcd0..d324934 100644
--- a/build/build_android_stubs.mk
+++ b/build/build_android_stubs.mk
@@ -39,6 +39,13 @@
 $(full_target): PRIVATE_ERRORPRONE_FLAGS :=
 endif
 
+ifneq ($(filter metalava%,$(sdk_stub_name)),)
+$(full_target): $(HOST_OUT_JAVA_LIBRARIES)/stub-annotations$(COMMON_JAVA_PACKAGE_SUFFIX)
+$(full_target): PRIVATE_METALAVA_CLASSPATH := -classpath $(HOST_OUT_JAVA_LIBRARIES)/stub-annotations$(COMMON_JAVA_PACKAGE_SUFFIX)
+else
+$(full_target): PRIVATE_METALAVA_CLASSPATH :=
+endif
+
 $(full_src_target): $(stub_timestamp)
 	@echo Packaging SDK Stub sources: $@
 	$(hide) cd $(PRIVATE_INTERMEDIATES_DIR) && zip -rq $(notdir $@) $(notdir $(PRIVATE_SRC_DIR))
@@ -63,7 +70,7 @@
 	$(hide) find $(PRIVATE_SRC_DIR) -name "*.java" > \
 	$(PRIVATE_INTERMEDIATES_DIR)/java-source-list
 	$(hide) $(TARGET_JAVAC) $(PRIVATE_ERRORPRONE_FLAGS) \
-			-source 1.8 -target 1.8 -encoding UTF-8 -bootclasspath "" \
+			-source 1.8 -target 1.8 -encoding UTF-8 -bootclasspath "" $(PRIVATE_METALAVA_CLASSPATH) \
 			-g -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \
 			\@$(PRIVATE_INTERMEDIATES_DIR)/java-source-list \
 		|| ( rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) ; exit 41 )