Use merge_zips to merge jars during Java build in Make.

1. Use merge_zips to merge jars without unzipping/rezipping static Java
libraries. And seperate merging process as a independent Make target so
that Javac can only depend on Turbine.

2. Remove duplicate vars: "full_java_lib_deps" in droiddoc.mk

3. Also use classes-header.jar for link_apk & link_instr

Bug: b/65455145
Test: m clean && m -j32

Change-Id: I7b0307664a6b86075c983284fce099bd3946318c
diff --git a/core/host_java_library.mk b/core/host_java_library.mk
index adc30dd..55b6684 100644
--- a/core/host_java_library.mk
+++ b/core/host_java_library.mk
@@ -36,11 +36,13 @@
 full_classes_jar := $(intermediates.COMMON)/classes.jar
 java_source_list_file := $(intermediates.COMMON)/java-source-list
 full_classes_header_jar := $(intermediates.COMMON)/classes-header.jar
+full_classes_combined_jar := $(intermediates.COMMON)/classes-combined.jar
 
 LOCAL_INTERMEDIATE_TARGETS += \
     $(full_classes_compiled_jar) \
     $(full_classes_jarjar_jar) \
-    $(java_source_list_file)
+    $(java_source_list_file) \
+    $(full_classes_combined_jar)
 
 #######################################
 include $(BUILD_SYSTEM)/base_rules.mk
@@ -79,7 +81,7 @@
 $(full_classes_compiled_jar): \
     $(java_source_list_file) \
     $(java_sources_deps) \
-    $(full_java_lib_deps) \
+    $(full_java_libs) \
     $(jar_manifest_file) \
     $(annotation_processor_deps) \
     $(NORMALIZE_PATH) \
@@ -92,14 +94,18 @@
 javac-check : $(full_classes_compiled_jar)
 javac-check-$(LOCAL_MODULE) : $(full_classes_compiled_jar)
 
+$(full_classes_combined_jar): $(full_classes_compiled_jar) \
+                              $(full_static_java_libs) | $(MERGE_ZIPS)
+	$(MERGE_ZIPS) -j -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)),)
 $(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
-$(full_classes_jarjar_jar): $(full_classes_compiled_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)
+$(full_classes_jarjar_jar): $(full_classes_combined_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)
 	@echo JarJar: $@
 	$(hide) $(JAVA) -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@
 else
-full_classes_jarjar_jar := $(full_classes_compiled_jar)
+full_classes_jarjar_jar := $(full_classes_combined_jar)
 endif