From 2dc79b11cd0a70a1857386ef8dc780a4834fa260 Mon Sep 17 00:00:00 2001 From: Yohann Roussel Date: Thu, 21 Apr 2016 16:30:18 +0200 Subject: [PATCH 1/2] Remove static libraries from Jack classpath Those libraries are already imported (or added to the classpath in the case of the check command) meaning that they were all duplicated. In addition to complicating the build this was also slowing down the compilation. Bug: 28307907 Change-Id: Ia8665e7c5ad8b567bd02de7839fa62e67a5668f7 --- core/definitions.mk | 6 +++--- core/java_common.mk | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index 9495bc8d96..129def6a8b 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2019,7 +2019,7 @@ $(call call-jack) \ $(if $(PRIVATE_RMTYPEDEFS), \ -D jack.android.remove-typedef="true") \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_ALL_JACK_LIBRARIES)))) \ + $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_JACK_SHARED_LIBRARIES)))) \ $(addprefix --import ,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES))) \ $(if $(PRIVATE_EXTRA_JAR_ARGS),--import-resource $@.res.tmp) \ -D jack.android.min-api-level=$(PRIVATE_JACK_MIN_SDK_VERSION) \ @@ -2063,7 +2063,7 @@ $(hide) if [ -s $@.java-source-list-uniq ] ; then \ $(call call-jack) \ $(strip $(PRIVATE_JACK_FLAGS)) \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES)) $(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_ALL_JACK_LIBRARIES)))) \ + $(call normalize-path-list,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES)) $(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_JACK_SHARED_LIBRARIES)))) \ -D jack.import.resource.policy=keep-first \ -D jack.android.min-api-level=$(PRIVATE_JACK_MIN_SDK_VERSION) \ -D jack.import.type.policy=keep-first \ @@ -2185,7 +2185,7 @@ $(call call-jack) \ $(if $(NO_OPTIMIZE_DX), \ -D jack.dex.optimize="false") \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_ALL_JACK_LIBRARIES)))) \ + $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_JACK_SHARED_LIBRARIES)))) \ $(addprefix --import ,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES))) \ $(if $(PRIVATE_EXTRA_JAR_ARGS),--import-resource $@.res.tmp) \ -D jack.import.resource.policy=keep-first \ diff --git a/core/java_common.mk b/core/java_common.mk index 5720b88b5e..32032fc339 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -363,7 +363,7 @@ full_shared_jack_libs := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS full_jack_deps := $(full_shared_jack_libs) endif # USE_CORE_LIB_BOOTCLASSPATH endif # !LOCAL_IS_HOST_MODULE -full_jack_libs := $(full_shared_jack_libs) $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH) +full_shared_jack_libs += $(LOCAL_JACK_CLASSPATH) full_jack_deps += $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH) ifndef LOCAL_IS_HOST_MODULE @@ -377,7 +377,6 @@ ifneq ($(apk_libraries),) # link against the jar with full original names (before proguard processing). full_shared_jack_libs += $(link_apk_jack_libraries) - full_jack_libs += $(link_apk_jack_libraries) full_jack_deps += $(link_apk_jack_libraries) endif @@ -387,13 +386,13 @@ endif ifdef LOCAL_INSTRUMENTATION_FOR # link against the jar with full original names (before proguard processing). link_instr_classes_jack := $(link_instr_intermediates_dir.COMMON)/classes.noshrob.jack - full_jack_libs += $(link_instr_classes_jack) + full_shared_jack_libs += $(link_instr_classes_jack) full_jack_deps += $(link_instr_classes_jack) endif # LOCAL_INSTRUMENTATION_FOR endif # !LOCAL_IS_HOST_MODULE # Propagate local configuration options to this target. -$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_ALL_JACK_LIBRARIES:= $(full_jack_libs) +$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_JACK_SHARED_LIBRARIES:= $(full_shared_jack_libs) $(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES) endif # need_compile_java From ae2fc8170666e5941b7a0ec2f3fea8f0b1254a6f Mon Sep 17 00:00:00 2001 From: Yohann Roussel Date: Thu, 21 Apr 2016 16:49:10 +0200 Subject: [PATCH 2/2] Remove bootclasspath handling for Jack Bootclasspath libraries are already added in LOCAL_JAVA_LIBRARIES by java.mk and host_dalvik_java_library.mk meaning that bootclasspath handling was just doing a duplicate work and adding duplicated entries to the classpath. Also fix order of bootclasspath libraries for host. Bug: 28307907 Change-Id: I6e98fc651a127435c029de65285dbf2cb04844af --- core/definitions.mk | 12 ++----- core/host_dalvik_java_library.mk | 3 +- core/host_dalvik_static_java_library.mk | 1 - core/java_common.mk | 42 ++----------------------- 4 files changed, 7 insertions(+), 51 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index 129def6a8b..57f719de1d 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -700,12 +700,6 @@ define jack-lib-files $(foreach lib,$(1),$(call _jack-lib-full-classes,$(lib),$(2))) endef -# $(1): library name list -# $(2): Non-empty if IS_HOST_MODULE -define jack-lib-deps -$(call jack-lib-files,$(1),$(2)) -endef - ########################################################### ## Run rot13 on a string ## $(1): the string. Must be one line. @@ -2019,7 +2013,7 @@ $(call call-jack) \ $(if $(PRIVATE_RMTYPEDEFS), \ -D jack.android.remove-typedef="true") \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_JACK_SHARED_LIBRARIES)))) \ + $(call normalize-path-list,$(PRIVATE_JACK_SHARED_LIBRARIES)))) \ $(addprefix --import ,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES))) \ $(if $(PRIVATE_EXTRA_JAR_ARGS),--import-resource $@.res.tmp) \ -D jack.android.min-api-level=$(PRIVATE_JACK_MIN_SDK_VERSION) \ @@ -2063,7 +2057,7 @@ $(hide) if [ -s $@.java-source-list-uniq ] ; then \ $(call call-jack) \ $(strip $(PRIVATE_JACK_FLAGS)) \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES)) $(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_JACK_SHARED_LIBRARIES)))) \ + $(call normalize-path-list,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES)) $(PRIVATE_JACK_SHARED_LIBRARIES)))) \ -D jack.import.resource.policy=keep-first \ -D jack.android.min-api-level=$(PRIVATE_JACK_MIN_SDK_VERSION) \ -D jack.import.type.policy=keep-first \ @@ -2185,7 +2179,7 @@ $(call call-jack) \ $(if $(NO_OPTIMIZE_DX), \ -D jack.dex.optimize="false") \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_JACK_SHARED_LIBRARIES)))) \ + $(call normalize-path-list,$(PRIVATE_JACK_SHARED_LIBRARIES)))) \ $(addprefix --import ,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES))) \ $(if $(PRIVATE_EXTRA_JAR_ARGS),--import-resource $@.res.tmp) \ -D jack.import.resource.policy=keep-first \ diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index da03a132c9..7fdf249f04 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -36,8 +36,7 @@ ifeq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true) endif ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) - LOCAL_JAVA_LIBRARIES += core-oj-hostdex - LOCAL_JAVA_LIBRARIES += core-libart-hostdex + LOCAL_JAVA_LIBRARIES := core-oj-hostdex core-libart-hostdex $(LOCAL_JAVA_LIBRARIES) endif full_classes_jack := $(intermediates.COMMON)/classes.jack diff --git a/core/host_dalvik_static_java_library.mk b/core/host_dalvik_static_java_library.mk index 46b8240795..b79c0ea890 100644 --- a/core/host_dalvik_static_java_library.mk +++ b/core/host_dalvik_static_java_library.mk @@ -24,5 +24,4 @@ LOCAL_IS_STATIC_JAVA_LIBRARY := true include $(BUILD_SYSTEM)/host_dalvik_java_library.mk -USE_CORE_LIB_BOOTCLASSPATH := LOCAL_IS_STATIC_JAVA_LIBRARY := diff --git a/core/java_common.mk b/core/java_common.mk index 32032fc339..e17691bc40 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -318,50 +318,14 @@ full_static_jack_libs := \ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_STATIC_JACK_LIBRARIES := $(full_static_jack_libs) -ifndef LOCAL_IS_HOST_MODULE -ifeq ($(LOCAL_SDK_VERSION),) -ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) -my_bootclasspath := -else -my_bootclasspath := $(call jack-lib-files,core-oj):$(call jack-lib-files,core-libart) -endif -else # LOCAL_SDK_VERSION -ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),current) -# LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS. -my_bootclasspath := $(call jack-lib-files,android_stubs_current) -else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),system_current) -my_bootclasspath := $(call jack-lib-files,android_system_stubs_current) -else -my_bootclasspath :=$(call jack-lib-files,sdk_v$(LOCAL_SDK_VERSION)) -endif # current or system_current -endif # LOCAL_SDK_VERSION -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES := $(my_bootclasspath) - full_shared_jack_libs := $(call jack-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) -full_jack_deps := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) +full_jack_deps := $(full_shared_jack_libs) + +ifndef LOCAL_IS_HOST_MODULE # Turn off .toc optimization for apps build as we cannot build dexdump. ifeq (,$(TARGET_BUILD_APPS)) full_jack_deps := $(patsubst %.jack, %.dex.toc, $(full_jack_deps)) endif - -else # LOCAL_IS_HOST_MODULE - -ifeq ($(USE_CORE_LIB_BOOTCLASSPATH),true) -ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) -my_bootclasspath := -else -my_bootclasspath := $(call jack-lib-files,core-oj-hostdex,$(LOCAL_IS_HOST_MODULE)):$(call jack-lib-files,core-libart-hostdex,$(LOCAL_IS_HOST_MODULE)) -endif -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES := $(my_bootclasspath) -# Compiling against the final jack library. If we want to add support for obfuscated library -# we'll need to change that to compile against the not obfuscated jack library. -full_shared_jack_libs := $(call jack-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) -full_jack_deps := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) -else -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES := -full_shared_jack_libs := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) -full_jack_deps := $(full_shared_jack_libs) -endif # USE_CORE_LIB_BOOTCLASSPATH endif # !LOCAL_IS_HOST_MODULE full_shared_jack_libs += $(LOCAL_JACK_CLASSPATH) full_jack_deps += $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH)