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
This commit is contained in:
Colin Cross 2017-07-06 13:45:26 -07:00
parent cd20d5980c
commit e37a3c959a
4 changed files with 20 additions and 13 deletions

View File

@ -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

View File

@ -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), \

View File

@ -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)

View File

@ -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