Merge "Remove ijar"
diff --git a/core/definitions.mk b/core/definitions.mk
index a19fc24..542db3e 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -2269,12 +2269,7 @@
 $(if $(PRIVATE_JAR_EXCLUDE_PACKAGES), $(hide) rm -rf \
     $(foreach pkg, $(PRIVATE_JAR_EXCLUDE_PACKAGES), \
         $(PRIVATE_CLASS_INTERMEDIATES_DIR)/$(subst .,/,$(pkg))))
-$(if $(PRIVATE_JAR_MANIFEST), \
-    $(hide) sed -e "s/%BUILD_NUMBER%/$(BUILD_NUMBER_FROM_FILE)/" \
-            $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf && \
-        $(JAR) -cfm $@ $(dir $@)/manifest.mf, \
-    $(hide) $(JAR) -cf $@) \
-        $(call jar-args-sorted-files-in-directory,$(PRIVATE_CLASS_INTERMEDIATES_DIR))
+$(hide) $(JAR) -cf $@ $(call jar-args-sorted-files-in-directory,$(PRIVATE_CLASS_INTERMEDIATES_DIR))
 $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@))
 endef
 
@@ -2295,9 +2290,7 @@
     --javacopts $(PRIVATE_JAVACFLAGS) $(COMMON_JDK_FLAGS) \
     $(addprefix --classpath ,$(strip \
         $(call normalize-path-list,$(PRIVATE_ALL_JAVA_HEADER_LIBRARIES)))) \
-    || ( rm -rf $(dir $@)/classes-turbine ; exit 41 ) \
-fi
-$(hide) if [ -s $@.premerged ] ; then \
+    || ( rm -rf $(dir $@)/classes-turbine ; exit 41 ) && \
     $(MERGE_ZIPS) -j -stripDir META-INF $@.tmp $@.premerged $(call reverse-list,$(PRIVATE_STATIC_JAVA_HEADER_LIBRARIES)) ; \
 else \
     $(MERGE_ZIPS) -j -stripDir META-INF $@.tmp $(call reverse-list,$(PRIVATE_STATIC_JAVA_HEADER_LIBRARIES)) ; \
diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk
index e42f499..81fddd9 100644
--- a/core/host_dalvik_java_library.mk
+++ b/core/host_dalvik_java_library.mk
@@ -112,7 +112,6 @@
     $(java_source_list_file) \
     $(java_sources_deps) \
     $(full_java_header_libs) \
-    $(jar_manifest_file) \
     $(annotation_processor_deps) \
     $(NORMALIZE_PATH) \
     $(JAR_ARGS) \
@@ -125,7 +124,6 @@
     $(java_source_list_file) \
     $(java_sources_deps) \
     $(full_java_header_libs) \
-    $(jar_manifest_file) \
     $(NORMALIZE_PATH) \
     $(JAR_ARGS) \
     $(ZIPTIME) \
@@ -149,10 +147,13 @@
 
 $(full_classes_combined_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF)
 $(full_classes_combined_jar): $(full_classes_compiled_jar) \
+                              $(jar_manifest_file) \
                               $(full_static_java_libs)  | $(MERGE_ZIPS)
-	$(MERGE_ZIPS) -j \
-        $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,-stripDir META-INF -zipToNotStrip $<) \
-        $@ $< $(call reverse-list,$(PRIVATE_STATIC_JAVA_LIBRARIES))
+	$(if $(PRIVATE_JAR_MANIFEST), $(hide) sed -e "s/%BUILD_NUMBER%/$(BUILD_NUMBER_FROM_FILE)/" \
+            $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf)
+	$(MERGE_ZIPS) -j $(if $(PRIVATE_JAR_MANIFEST),-m $(dir $@)/manifest.mf) \
+            $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,-stripDir META-INF -zipToNotStrip $<) \
+            $@ $< $(call reverse-list,$(PRIVATE_STATIC_JAVA_LIBRARIES))
 
 # Run jarjar if necessary, otherwise just copy the file.
 ifneq ($(strip $(LOCAL_JARJAR_RULES)),)
diff --git a/core/host_java_library.mk b/core/host_java_library.mk
index 55b6684..03dc67c 100644
--- a/core/host_java_library.mk
+++ b/core/host_java_library.mk
@@ -82,7 +82,6 @@
     $(java_source_list_file) \
     $(java_sources_deps) \
     $(full_java_libs) \
-    $(jar_manifest_file) \
     $(annotation_processor_deps) \
     $(NORMALIZE_PATH) \
     $(ZIPTIME) \
@@ -95,8 +94,12 @@
 javac-check-$(LOCAL_MODULE) : $(full_classes_compiled_jar)
 
 $(full_classes_combined_jar): $(full_classes_compiled_jar) \
+                              $(jar_manifest_file) \
                               $(full_static_java_libs) | $(MERGE_ZIPS)
-	$(MERGE_ZIPS) -j -stripDir META-INF -zipToNotStrip $< $@ $< $(call reverse-list,$(PRIVATE_STATIC_JAVA_LIBRARIES))
+	$(if $(PRIVATE_JAR_MANIFEST), $(hide) sed -e "s/%BUILD_NUMBER%/$(BUILD_NUMBER_FROM_FILE)/" \
+            $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf)
+	$(MERGE_ZIPS) -j $(if $(PRIVATE_JAR_MANIFEST),-m $(dir $@)/manifest.mf) \
+            -stripDir META-INF -zipToNotStrip $< $@ $< $(call reverse-list,$(PRIVATE_STATIC_JAVA_LIBRARIES))
 
 # Run jarjar if necessary, otherwise just copy the file.
 ifneq ($(strip $(LOCAL_JARJAR_RULES)),)
diff --git a/core/java.mk b/core/java.mk
index 1e63d48..6d64991 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -476,7 +476,6 @@
     $(java_source_list_file) \
     $(java_sources_deps) \
     $(full_java_header_libs) \
-    $(jar_manifest_file) \
     $(layers_file) \
     $(annotation_processor_deps) \
     $(NORMALIZE_PATH) \
@@ -490,8 +489,6 @@
     $(java_source_list_file) \
     $(java_sources_deps) \
     $(full_java_header_libs) \
-    $(jar_manifest_file) \
-    $(layers_file) \
     $(NORMALIZE_PATH) \
     $(JAR_ARGS) \
     $(ZIPTIME) \
@@ -518,10 +515,13 @@
 
 $(full_classes_combined_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF)
 $(full_classes_combined_jar): $(full_classes_compiled_jar) \
+                              $(jar_manifest_file) \
                               $(full_static_java_libs) | $(MERGE_ZIPS)
-	$(MERGE_ZIPS) -j \
-        $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,-stripDir META-INF -zipToNotStrip $<) \
-        $@ $< $(call reverse-list,$(PRIVATE_STATIC_JAVA_LIBRARIES))
+	$(if $(PRIVATE_JAR_MANIFEST), $(hide) sed -e "s/%BUILD_NUMBER%/$(BUILD_NUMBER_FROM_FILE)/" \
+            $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf)
+	$(MERGE_ZIPS) -j $(if $(PRIVATE_JAR_MANIFEST),-m $(dir $@)/manifest.mf) \
+            $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,-stripDir META-INF -zipToNotStrip $<) \
+            $@ $< $(call reverse-list,$(PRIVATE_STATIC_JAVA_LIBRARIES))
 
 ifdef LOCAL_JAR_PROCESSOR
 # LOCAL_JAR_PROCESSOR_ARGS must be evaluated here to set up the rule-local
@@ -716,6 +716,7 @@
 endif
 endif
 
+$(full_classes_proguard_jar): .KATI_IMPLICIT_OUTPUTS := $(proguard_dictionary)
 $(full_classes_proguard_jar): PRIVATE_PROGUARD_INJAR_FILTERS := $(proguard_injar_filters)
 $(full_classes_proguard_jar): PRIVATE_EXTRA_INPUT_JAR := $(extra_input_jar)
 $(full_classes_proguard_jar): PRIVATE_PROGUARD_FLAGS := $(legacy_proguard_flags) $(common_proguard_flags) $(LOCAL_PROGUARD_FLAGS)
diff --git a/core/soong_java_prebuilt.mk b/core/soong_java_prebuilt.mk
index ee8b199..ce09eb1 100644
--- a/core/soong_java_prebuilt.mk
+++ b/core/soong_java_prebuilt.mk
@@ -1,17 +1,12 @@
 # Java prebuilt coming from Soong.
 # Extra inputs:
 # LOCAL_SOONG_HEADER_JAR
-# LOCAL_SOONG_DEX
+# LOCAL_SOONG_DEX_JAR
 
 ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK))
   $(call pretty-error,soong_java_prebuilt.mk may only be used from Soong)
 endif
 
-# TODO: device support
-ifndef LOCAL_IS_HOST_MODULE
-  $(call pretty-error,exporting soong device jars to make not supported yet)
-endif
-
 LOCAL_MODULE_SUFFIX := .jar
 LOCAL_BUILT_MODULE_STEM := javalib.jar
 
@@ -21,6 +16,7 @@
 
 full_classes_jar := $(intermediates.COMMON)/classes.jar
 full_classes_header_jar := $(intermediates.COMMON)/classes-header.jar
+common_javalib.jar := $(intermediates.COMMON)/javalib.jar
 
 LOCAL_FULL_CLASSES_PRE_JACOCO_JAR := $(LOCAL_PREBUILT_MODULE_FILE)
 
@@ -28,7 +24,6 @@
 include $(BUILD_SYSTEM)/jacoco.mk
 #######################################
 
-$(eval $(call copy-one-file,$(LOCAL_FULL_CLASSES_JACOCO_JAR),$(LOCAL_BUILT_MODULE)))
 $(eval $(call copy-one-file,$(LOCAL_FULL_CLASSES_JACOCO_JAR),$(full_classes_jar)))
 
 ifdef LOCAL_SOONG_HEADER_JAR
@@ -37,9 +32,38 @@
 $(eval $(call copy-one-file,$(full_classes_jar),$(full_classes_header_jar)))
 endif
 
+ifdef LOCAL_SOONG_DEX_JAR
+$(eval $(call copy-one-file,$(LOCAL_SOONG_DEX_JAR),$(common_javalib.jar)))
+$(eval $(call copy-one-file,$(LOCAL_SOONG_DEX_JAR),$(LOCAL_BUILT_MODULE)))
+java-dex : $(LOCAL_BUILT_MODULE)
+else
+$(eval $(call copy-one-file,$(full_classes_jar),$(LOCAL_BUILT_MODULE)))
+endif
+
 javac-check : $(full_classes_jar)
 javac-check-$(LOCAL_MODULE) : $(full_classes_jar)
 
+ifndef LOCAL_IS_HOST_MODULE
+ifeq ($(LOCAL_SDK_VERSION),system_current)
+my_link_type := java:system
+my_warn_types := java:platform
+my_allowed_types := java:sdk java:system
+else ifneq ($(LOCAL_SDK_VERSION),)
+my_link_type := java:sdk
+my_warn_types := java:system java:platform
+my_allowed_types := java:sdk
+else
+my_link_type := java:platform
+my_warn_types :=
+my_allowed_types := java:sdk java:system java:platform
+endif
+
+my_link_deps :=
+my_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX)
+my_common := COMMON
+include $(BUILD_SYSTEM)/link_type.mk
+endif # !LOCAL_IS_HOST_MODULE
+
 # Built in equivalent to include $(CLEAR_VARS)
 LOCAL_SOONG_HEADER_JAR :=
-LOCAL_SOONG_DEX :=
+LOCAL_SOONG_DEX_JAR :=