From e37a3c959a833b9979f7e820cb037711c7453c16 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 6 Jul 2017 13:45:26 -0700 Subject: [PATCH] Use dx.jar directly Use $(JAVA) to invoke dx.jar instead of the dx wrapper script. Also allow the dx command line or the dx jar to be specified on the command line. Allows better dependencies on dx.jar, and doesn't rely on having java on the path. Bug: 62956999 Test: m -j checkbuild Change-Id: I5f265132690ad28b3139954fea44eb0c4a43393a --- core/config.mk | 27 +++++++++++++++++---------- core/definitions.mk | 2 +- core/host_dalvik_java_library.mk | 2 +- core/java.mk | 2 +- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/core/config.mk b/core/config.mk index f839d3d651..dba2555954 100644 --- a/core/config.mk +++ b/core/config.mk @@ -499,6 +499,11 @@ prebuilt_sdk_tools_bin := $(prebuilt_sdk_tools)/$(HOST_OS)/bin USE_PREBUILT_SDK_TOOLS_IN_PLACE := true +# TODO(ccross): remove this once the build server no longer references it +ifdef DX_ALT_JAR +DX_JAR := DX_ALT_JAR +endif + # # Tools that are prebuilts for TARGET_BUILD_APPS # @@ -506,24 +511,16 @@ ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) AIDL := $(HOST_OUT_EXECUTABLES)/aidl AAPT := $(HOST_OUT_EXECUTABLES)/aapt AAPT2 := $(HOST_OUT_EXECUTABLES)/aapt2 + DX_JAR ?= $(HOST_OUT_JAVA_LIBRARIES)/dx.jar MAINDEXCLASSES := $(HOST_OUT_EXECUTABLES)/mainDexClasses SIGNAPK_JAR := $(HOST_OUT_JAVA_LIBRARIES)/signapk$(COMMON_JAVA_PACKAGE_SUFFIX) SIGNAPK_JNI_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES) ZIPALIGN := $(HOST_OUT_EXECUTABLES)/zipalign - - ifndef DX_ALT_JAR - DX := $(HOST_OUT_EXECUTABLES)/dx - DX_COMMAND := $(DX) -JXms16M -JXmx2048M - else - DX := $(DX_ALT_JAR) - DX_COMMAND := $(JAVA) -Xms16M -Xmx2048M -jar $(DX) - endif else # TARGET_BUILD_APPS || TARGET_BUILD_PDK AIDL := $(prebuilt_sdk_tools_bin)/aidl AAPT := $(prebuilt_sdk_tools_bin)/aapt AAPT2 := $(prebuilt_sdk_tools_bin)/aapt2 - DX := $(prebuilt_sdk_tools)/dx - DX_COMMAND := $(DX) -JXms16M -JXmx2048M + DX_JAR ?= $(prebuilt_sdk_tools)/lib/dx.jar MAINDEXCLASSES := $(prebuilt_sdk_tools)/mainDexClasses ZIPALIGN := $(prebuilt_sdk_tools_bin)/zipalign SIGNAPK_JAR := $(prebuilt_sdk_tools)/lib/signapk$(COMMON_JAVA_PACKAGE_SUFFIX) @@ -561,6 +558,16 @@ SOONG_ZIP := $(SOONG_HOST_OUT_EXECUTABLES)/soong_zip ZIP2ZIP := $(SOONG_HOST_OUT_EXECUTABLES)/zip2zip ZIPTIME := $(prebuilt_build_tools_bin)/ziptime +# DX can be overriden on the command line +ifndef DX +#TODO: use a smaller -Xmx value for most libraries; +# only core.jar and framework.jar need a heap this big. +DX := $(JAVA) -Xms16M -Xmx2048M -jar $(DX_JAR) +DX_DEPS := $(DX_JAR) +else +DX_DEPS ?= $(DX) +endif + # --------------------------------------------------------------- # Generic tools. JACK := $(HOST_OUT_EXECUTABLES)/jack diff --git a/core/definitions.mk b/core/definitions.mk index fe8d644259..d0f6d4c291 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2557,7 +2557,7 @@ define transform-classes.jar-to-dex @echo "target Dex: $(PRIVATE_MODULE)" @mkdir -p $(dir $@) $(hide) rm -f $(dir $@)classes*.dex -$(hide) $(DX_COMMAND) \ +$(hide) $(DX) \ --dex --output=$(dir $@) \ --min-sdk-version=$(call codename-or-sdk-to-sdk,$(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ $(if $(NO_OPTIMIZE_DX), \ diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index 4f3069fb58..94ce5b3384 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -136,7 +136,7 @@ $(LOCAL_BUILT_MODULE) : $(full_classes_jar) 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_jar) $(DX) +$(built_dex): $(full_classes_jar) $(DX_DEPS) $(transform-classes.jar-to-dex) $(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex) diff --git a/core/java.mk b/core/java.mk index e4569934cc..24080dc920 100644 --- a/core/java.mk +++ b/core/java.mk @@ -673,7 +673,7 @@ $(built_dex_intermediate): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS) ifeq ($(LOCAL_EMMA_INSTRUMENT),true) $(built_dex_intermediate): PRIVATE_DX_FLAGS += --no-locals endif -$(built_dex_intermediate): $(full_classes_jar) $(DX) +$(built_dex_intermediate): $(full_classes_jar) $(DX_DEPS) $(transform-classes.jar-to-dex) endif # LOCAL_JACK_ENABLED is disabled