summaryrefslogtreecommitdiffstats
path: root/core/java_library.mk
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2010-09-17 16:36:06 -0700
committerYing Wang <wangying@google.com>2010-09-22 16:51:53 -0700
commite7874c430895b9a4e631c89f1e7729da9264d167 (patch)
treeeca14a68019faa2ee119cab7de78fcc8df7dedc0 /core/java_library.mk
parent38a3161dc7f5fec81df9412bc202c3962c74535d (diff)
downloadbuild-e7874c430895b9a4e631c89f1e7729da9264d167.zip
build-e7874c430895b9a4e631c89f1e7729da9264d167.tar.gz
build-e7874c430895b9a4e631c89f1e7729da9264d167.tar.bz2
Integrate dexpreopt into the build system.
Change-Id: Id67f85d0f5c8674f5bc22e431114ca73625811ef
Diffstat (limited to 'core/java_library.mk')
-rw-r--r--core/java_library.mk51
1 files changed, 50 insertions, 1 deletions
diff --git a/core/java_library.mk b/core/java_library.mk
index a33bf2e..3e670a9 100644
--- a/core/java_library.mk
+++ b/core/java_library.mk
@@ -23,6 +23,14 @@ all_res_assets :=
LOCAL_BUILT_MODULE_STEM := javalib.jar
+ifndef LOCAL_IS_HOST_MODULE
+ifeq (true,$(WITH_DEXPREOPT))
+ifndef LOCAL_DEX_PREOPT
+LOCAL_DEX_PREOPT := true
+endif
+endif
+endif
+
#################################
include $(BUILD_SYSTEM)/java.mk
#################################
@@ -35,13 +43,54 @@ $(LOCAL_BUILT_MODULE): $(full_classes_jar)
else # !LOCAL_IS_STATIC_JAVA_LIBRARY
+ifeq ($(LOCAL_DEX_PREOPT),true)
+jar_with_dex := $(intermediates.COMMON)/javalib.dex.jar
+$(jar_with_dex): PRIVATE_DEX_FILE := $(built_dex)
+$(jar_with_dex) : $(built_dex) $(java_resource_sources) | $(AAPT)
+ @echo "target Jar: $(PRIVATE_MODULE) ($@)"
+ $(create-empty-package)
+ $(add-dex-to-package)
+ifneq ($(extra_jar_args),)
+ $(add-java-resources-to-package)
+endif
+
+dexpreopt_boot_jar_module := $(filter $(LOCAL_MODULE),$(DEXPREOPT_BOOT_JARS_MODULES))
+ifneq ($(dexpreopt_boot_jar_module),)
+# boot jar's rules are defined in dex_preopt.mk
+dexpreopted_boot_jar := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(dexpreopt_boot_jar_module)_nodex.jar
+$(LOCAL_BUILT_MODULE) : $(dexpreopted_boot_jar) | $(ACP)
+ $(call copy-file-to-target)
+
+dexpreopted_boot_odex := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(dexpreopt_boot_jar_module).odex
+built_odex := $(basename $(LOCAL_BUILT_MODULE)).odex
+$(built_odex) : $(dexpreopted_boot_odex) | $(ACP)
+ $(call copy-file-to-target)
+
+else # dexpreopt_boot_jar_module
+built_odex := $(basename $(LOCAL_BUILT_MODULE)).odex
+$(built_odex): PRIVATE_MODULE := $(LOCAL_MODULE)
+# Make sure the boot jars get dex-preopt-ed first
+$(built_odex) : $(DEXPREOPT_BOOT_ODEXS)
+$(built_odex) : $(jar_with_dex) | $(DEXPREOPT) $(DEXOPT)
+ @echo "Dexpreopt Jar: $(PRIVATE_MODULE) ($@)"
+ $(hide) rm -f $@
+ $(call dexpreopt-one-file,$<,$@)
+
+$(LOCAL_BUILT_MODULE) : $(jar_with_dex) | $(ACP) $(AAPT)
+ $(call copy-file-to-target)
+ $(call dexpreopt-remove-classes.dex,$@)
+
+endif # dexpreopt_boot_jar_module
+
+else # LOCAL_DEX_PREOPT
$(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex)
-$(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources) | $(AAPT)
+$(LOCAL_BUILT_MODULE) : $(built_dex) $(java_resource_sources) | $(AAPT)
@echo "target Jar: $(PRIVATE_MODULE) ($@)"
$(create-empty-package)
$(add-dex-to-package)
ifneq ($(extra_jar_args),)
$(add-java-resources-to-package)
endif
+endif # LOCAL_DEX_PREOPT
endif # !LOCAL_IS_STATIC_JAVA_LIBRARY