Fix broken interaction of JarJar and Emma.

JarJar, like DX, can't handle the local var corruption that Emma
performs.  To fix this, I'm moving the JarJar step before the Emma
step.

Couple other minor changes:
* Improved the comment about emma hardcoding its output filename,
  since this took me about an hour to track down.
* Changed one line from "Copying $<" to "Copying $@".  It seems to be
  the convention that such lines print the destination, not the
  source, so I made it consistent.

Change-Id: I9f5c36b4f5af15daf15025b89860e942f15bb668
This commit is contained in:
Steve Howard
2010-07-07 14:07:24 -07:00
parent 2b8ba2fa20
commit de6a085764

View File

@@ -71,12 +71,13 @@ endif
full_classes_compiled_jar := $(intermediates.COMMON)/$(full_classes_compiled_jar_leaf) full_classes_compiled_jar := $(intermediates.COMMON)/$(full_classes_compiled_jar_leaf)
built_dex_intermediate := $(intermediates.COMMON)/$(built_dex_leaf) built_dex_intermediate := $(intermediates.COMMON)/$(built_dex_leaf)
jarjar_leaf := classes-jarjar.jar
full_classes_jarjar_jar := $(intermediates.COMMON)/$(jarjar_leaf)
emma_intermediates_dir := $(intermediates.COMMON)/emma_out emma_intermediates_dir := $(intermediates.COMMON)/emma_out
# the 'lib/$(full_classes_compiled_jar_leaf)' portion of this path is fixed in # emma is hardcoded to use the leaf name of its input for the output file --
# the emma tool # only the output directory can be changed
full_classes_emma_jar := $(emma_intermediates_dir)/lib/$(full_classes_compiled_jar_leaf) full_classes_emma_jar := $(emma_intermediates_dir)/lib/$(jarjar_leaf)
full_classes_stubs_jar := $(intermediates.COMMON)/stubs.jar full_classes_stubs_jar := $(intermediates.COMMON)/stubs.jar
full_classes_jarjar_jar := $(intermediates.COMMON)/classes-jarjar.jar
full_classes_full_names_jar := $(intermediates.COMMON)/classes-full-names.jar full_classes_full_names_jar := $(intermediates.COMMON)/classes-full-names.jar
full_classes_proguard_jar := $(full_classes_jar) full_classes_proguard_jar := $(full_classes_jar)
built_dex := $(intermediates.COMMON)/classes.dex built_dex := $(intermediates.COMMON)/classes.dex
@@ -161,6 +162,18 @@ ALL_MODULES.$(LOCAL_MODULE).CHECKED := $(full_classes_compiled_jar)
$(full_classes_compiled_jar): PRIVATE_JAVAC_DEBUG_FLAGS := -g $(full_classes_compiled_jar): PRIVATE_JAVAC_DEBUG_FLAGS := -g
# 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) | $(JARJAR)
@echo JarJar: $@
$(hide) java -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@
else
$(full_classes_jarjar_jar): $(full_classes_compiled_jar) | $(ACP)
@echo Copying: $@
$(hide) $(ACP) $< $@
endif
ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true) ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
# Skip adding emma instrumentation to class files if this is a static library, # Skip adding emma instrumentation to class files if this is a static library,
# since it will be instrumented by the package that includes it # since it will be instrumented by the package that includes it
@@ -181,32 +194,20 @@ $(full_classes_emma_jar): PRIVATE_EMMA_COVERAGE_FILTER := *,-emma,-emmarun,-com.
endif endif
# this rule will generate both $(PRIVATE_EMMA_COVERAGE_FILE) and # this rule will generate both $(PRIVATE_EMMA_COVERAGE_FILE) and
# $(full_classes_emma_jar) # $(full_classes_emma_jar)
$(full_classes_emma_jar): $(full_classes_compiled_jar) | $(EMMA_JAR) $(full_classes_emma_jar): $(full_classes_jarjar_jar) | $(EMMA_JAR)
$(transform-classes.jar-to-emma) $(transform-classes.jar-to-emma)
$(PRIVATE_EMMA_COVERAGE_FILE): $(full_classes_emma_jar) $(PRIVATE_EMMA_COVERAGE_FILE): $(full_classes_emma_jar)
# tell proguard to load emma jar # tell proguard to load emma jar
LOCAL_PROGUARD_FLAGS := $(LOCAL_PROGUARD_FLAGS) $(addprefix -libraryjars ,$(EMMA_JAR)) LOCAL_PROGUARD_FLAGS := $(LOCAL_PROGUARD_FLAGS) $(addprefix -libraryjars ,$(EMMA_JAR))
else else
$(full_classes_emma_jar): $(full_classes_compiled_jar) | $(ACP) $(full_classes_emma_jar): $(full_classes_jarjar_jar) | $(ACP)
@echo Copying: $< @echo Copying: $@
$(copy-file-to-target) $(copy-file-to-target)
endif endif
# 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_emma_jar) | $(JARJAR)
@echo JarJar: $@
$(hide) java -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@
else
$(full_classes_jarjar_jar): $(full_classes_emma_jar) | $(ACP)
@echo Copying: $@
$(hide) $(ACP) $< $@
endif
# Keep a copy of the jar just before proguard processing. # Keep a copy of the jar just before proguard processing.
$(full_classes_full_names_jar): $(full_classes_jarjar_jar) | $(ACP) $(full_classes_full_names_jar): $(full_classes_emma_jar) | $(ACP)
@echo Copying: $@ @echo Copying: $@
$(hide) $(ACP) $< $@ $(hide) $(ACP) $< $@