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
diff --git a/core/config.mk b/core/config.mk
index f839d3d..dba2555 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -499,6 +499,11 @@
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 @@
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 @@
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 fe8d644..d0f6d4c 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -2557,7 +2557,7 @@
@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 4f3069f..94ce5b3 100644
--- a/core/host_dalvik_java_library.mk
+++ b/core/host_dalvik_java_library.mk
@@ -136,7 +136,7 @@
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 e456993..24080dc 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -673,7 +673,7 @@
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