From eaafb3cd37468eb048c52afd7b55f3ece1f307f0 Mon Sep 17 00:00:00 2001 From: Alan Leung Date: Fri, 1 Dec 2017 14:32:58 -0800 Subject: [PATCH] Add USE_D8_DESUGAR option in build/core Add an option to use D8's desugar instead of the standalone version. USE_D8_DESUGAR=true m would trigger DCHECK in dex2oat unless https://android-review.googlesource.com/c/platform/art/+/562595 is patched in as well. Bug: 69329508 Test: m && USE_D8_DESUGAR=false m Change-Id: I601dada44c361e45bbc0e2227ae1544a7d9efa90 --- core/definitions.mk | 13 +++++++++++++ core/host_dalvik_java_library.mk | 4 ++++ core/java.mk | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/core/definitions.mk b/core/definitions.mk index 96a6663ec8..e350bd0e95 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2411,6 +2411,19 @@ $(hide) $(DX_COMMAND) \ $< endef + +define transform-classes-d8.jar-to-dex +@echo "target Dex: $(PRIVATE_MODULE)" +@mkdir -p $(dir $@) +$(hide) rm -f $(dir $@)classes*.dex +$(hide) $(DX_COMMAND) \ + --output $(dir $@) \ + --min-api $(PRIVATE_MIN_SDK_VERSION) \ + $(subst --no-locals, --release, \ + $(filter-out --core-library --multi-dex,$(PRIVATE_DX_FLAGS))) \ + $< +endef + # Create a mostly-empty .jar file that we'll add to later. # The MacOS jar tool doesn't like creating empty jar files, # so we need to give it something. diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index 1b3f9677ba..8647fb4240 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -173,7 +173,11 @@ else # !LOCAL_IS_STATIC_JAVA_LIBRARY $(built_dex): PRIVATE_INTERMEDIATES_DIR := $(intermediates.COMMON) $(built_dex): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS) $(built_dex): $(full_classes_desugar_jar) $(DX) +ifneq ($(USE_D8_DESUGAR),true) $(transform-classes.jar-to-dex) +else + $(transform-classes-d8.jar-to-dex) +endif $(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex) $(LOCAL_BUILT_MODULE): PRIVATE_SOURCE_ARCHIVE := $(full_classes_jarjar_jar) diff --git a/core/java.mk b/core/java.mk index 75bc387841..ea43311685 100644 --- a/core/java.mk +++ b/core/java.mk @@ -574,6 +574,7 @@ ifdef TARGET_OPENJDK9 LOCAL_DX_FLAGS := $(filter-out --multi-dex,$(LOCAL_DX_FLAGS)) --multi-dex endif +ifneq ($(USE_D8_DESUGAR),true) my_desugaring := ifndef LOCAL_IS_STATIC_JAVA_LIBRARY my_desugaring := true @@ -581,6 +582,9 @@ $(full_classes_desugar_jar): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS) $(full_classes_desugar_jar): $(full_classes_jar) $(full_java_header_libs) $(DESUGAR) $(desugar-classes-jar) endif +else +my_desugaring := +endif ifndef my_desugaring full_classes_desugar_jar := $(full_classes_jar) @@ -774,7 +778,11 @@ endif # LOCAL_PROGUARD_ENABLED ifndef my_r8 $(built_dex_intermediate): $(full_classes_proguard_jar) $(DX) +ifneq ($(USE_D8_DESUGAR),true) $(transform-classes.jar-to-dex) +else + $(transform-classes-d8.jar-to-dex) +endif endif $(built_dex): $(built_dex_intermediate)