OSDN Git Service

[DO NOT MERGE] Updating Security String to 2017-03-05 on klp-dev b/34345751 am: 3597d...
[android-x86/build.git] / core / dex_preopt.mk
1 ####################################
2 # dexpreopt support - typically used on user builds to run dexopt (for Dalvik) or dex2oat (for ART) ahead of time
3 #
4 ####################################
5
6 ifeq ($(DALVIK_VM_LIB),)
7 $(error No value for DALVIK_VM_LIB)
8 endif
9
10 # list of boot classpath jars for dexpreopt
11 DEXPREOPT_BOOT_JARS := $(subst $(space),:,$(PRODUCT_BOOT_JARS))
12 DEXPREOPT_BOOT_JARS_MODULES := $(PRODUCT_BOOT_JARS)
13 PRODUCT_BOOTCLASSPATH := $(subst $(space),:,$(foreach m,$(DEXPREOPT_BOOT_JARS_MODULES),/system/framework/$(m).jar))
14
15 DEXPREOPT_BUILD_DIR := $(OUT_DIR)
16 DEXPREOPT_PRODUCT_DIR_FULL_PATH := $(PRODUCT_OUT)/dex_bootjars
17 DEXPREOPT_PRODUCT_DIR := $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(DEXPREOPT_PRODUCT_DIR_FULL_PATH))
18 DEXPREOPT_BOOT_JAR_DIR := system/framework
19 DEXPREOPT_BOOT_JAR_DIR_FULL_PATH := $(DEXPREOPT_PRODUCT_DIR_FULL_PATH)/$(DEXPREOPT_BOOT_JAR_DIR)
20
21 # $(1): the .jar or .apk to remove classes.dex
22 define dexpreopt-remove-classes.dex
23 $(hide) $(AAPT) remove $(1) classes.dex
24 endef
25
26 # Special rules for building stripped boot jars that override java_library.mk rules
27
28 # $(1): boot jar module name
29 define _dexpreopt-boot-jar-remove-classes.dex
30 _dbj_jar_no_dex := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(1)_nodex.jar
31 _dbj_src_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,$(1),,COMMON)/javalib.jar
32
33 $$(_dbj_jar_no_dex) : $$(_dbj_src_jar) | $(ACP) $(AAPT)
34         $$(call copy-file-to-target)
35 ifneq ($(DEX_PREOPT_DEFAULT),nostripping)
36         $$(call dexpreopt-remove-classes.dex,$$@)
37 endif
38
39 _dbj_jar_no_dex :=
40 _dbj_src_jar :=
41 endef
42
43 $(foreach b,$(DEXPREOPT_BOOT_JARS_MODULES),$(eval $(call _dexpreopt-boot-jar-remove-classes.dex,$(b))))
44
45 # Conditionally include Dalvik support.
46 ifeq ($(DALVIK_VM_LIB),libdvm.so)
47 include $(BUILD_SYSTEM)/dex_preopt_libdvm.mk
48 endif
49
50 # Unconditionally include ART support because its used run dex2oat on the host for tests.
51 include $(BUILD_SYSTEM)/dex_preopt_libart.mk
52
53 # Define dexpreopt-one-file based on current default runtime.
54 # $(1): the boot image to use (unused for libdvm)
55 # $(2): the input .jar or .apk file
56 # $(3): the input .jar or .apk target location (unused for libdvm)
57 # $(4): the output .odex file
58 ifeq ($(DALVIK_VM_LIB),libdvm.so)
59 define dexpreopt-one-file
60 $(call dexopt-one-file,$(2),$(4))
61 endef
62
63 DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS := $(DEXOPT_DEPENDENCY)
64 DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEXPREOPT_BOOT_ODEXS)
65 else
66 define dexpreopt-one-file
67 $(call dex2oat-one-file,$(1),$(2),$(3),$(4))
68 endef
69
70 DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS := $(DEX2OAT_DEPENDENCY)
71 DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEFAULT_DEX_PREOPT_BUILT_IMAGE)
72 endif