OSDN Git Service

Do not stash BOARD_SYSTEMIMAGE_PARTITION_SIZE
[android-x86/build.git] / core / dex_preopt.mk
1 ####################################
2 # Dexpreopt on the boot jars
3 #
4 ####################################
5
6 DEXPREOPT_BOOT_JARS := $(PRODUCT_BOOT_JARS)
7 DEXPREOPT_BOOT_JARS_MODULES := $(subst :, ,$(DEXPREOPT_BOOT_JARS))
8 PRODUCT_BOOTCLASSPATH := $(subst $(space),:,$(foreach m,$(DEXPREOPT_BOOT_JARS_MODULES),/system/framework/$(m).jar))
9
10 DEXPREOPT_BUILD_DIR := $(OUT_DIR)
11 DEXPREOPT_PRODUCT_DIR := $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(PRODUCT_OUT))/dex_bootjars
12 DEXPREOPT_BOOT_JAR_DIR := system/framework
13 DEXPREOPT_DEXOPT := $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(DEXOPT))
14
15 DEXPREOPT_BOOT_JAR_DIR_FULL_PATH := $(DEXPREOPT_BUILD_DIR)/$(DEXPREOPT_PRODUCT_DIR)/$(DEXPREOPT_BOOT_JAR_DIR)
16
17 DEXPREOPT_BOOT_ODEXS := $(foreach b,$(DEXPREOPT_BOOT_JARS_MODULES),\
18     $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(b).odex)
19
20 # If the target is a uniprocessor, then explicitly tell the preoptimizer
21 # that fact. (By default, it always optimizes for an SMP target.)
22 ifeq ($(TARGET_CPU_SMP),true)
23 DEXPREOPT_UNIPROCESSOR :=
24 else
25 DEXPREOPT_UNIPROCESSOR := --uniprocessor
26 endif
27
28 # $(1): the .jar or .apk to remove classes.dex
29 define dexpreopt-remove-classes.dex
30 $(hide) $(AAPT) remove $(1) classes.dex
31 endef
32
33 # $(1): the input .jar or .apk file
34 # $(2): the output .odex file
35 define dexpreopt-one-file
36 $(hide) $(DEXPREOPT) --dexopt=$(DEXPREOPT_DEXOPT) --build-dir=$(DEXPREOPT_BUILD_DIR) \
37         --product-dir=$(DEXPREOPT_PRODUCT_DIR) --boot-dir=$(DEXPREOPT_BOOT_JAR_DIR) \
38         --boot-jars=$(DEXPREOPT_BOOT_JARS) $(DEXPREOPT_UNIPROCESSOR) \
39         $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(1)) \
40         $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(2))
41 endef
42
43 # $(1): boot jar module name
44 define _dexpreopt-boot-jar
45 $(eval _dbj_jar := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(1).jar)
46 $(eval _dbj_odex := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(1).odex)
47 $(eval _dbj_jar_no_dex := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(1)_nodex.jar)
48 $(eval _dbj_src_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,$(1),,COMMON)/javalib.jar)
49 $(eval $(_dbj_odex): PRIVATE_DBJ_JAR := $(_dbj_jar))
50 $(_dbj_odex) : $(_dbj_src_jar) | $(ACP) $(DEXPREOPT) $(DEXOPT)
51         @echo "Dexpreopt Boot Jar: $$@"
52         $(hide) rm -f $$@
53         $(hide) mkdir -p $$(dir $$@)
54         $(hide) $(ACP) -fp $$< $$(PRIVATE_DBJ_JAR)
55         $$(call dexpreopt-one-file,$$(PRIVATE_DBJ_JAR),$$@)
56
57 $(_dbj_jar_no_dex) : $(_dbj_src_jar) | $(ACP) $(AAPT)
58         $$(call copy-file-to-target)
59 ifneq ($(DEX_PREOPT_DEFAULT),nostripping)
60         $$(call dexpreopt-remove-classes.dex,$$@)
61 endif
62
63 $(eval _dbj_jar :=)
64 $(eval _dbj_odex :=)
65 $(eval _dbj_jar_no_dex :=)
66 $(eval _dbj_src_jar :=)
67 endef
68
69 $(foreach b,$(DEXPREOPT_BOOT_JARS_MODULES),$(eval $(call _dexpreopt-boot-jar,$(b))))
70
71 # $(1): the rest list of boot jars
72 define _build-dexpreopt-boot-jar-dependency-pair
73 $(if $(filter 1,$(words $(1)))$(filter 0,$(words $(1))),,\
74         $(eval _bdbjdp_target := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(word 2,$(1)).odex) \
75         $(eval _bdbjdp_dep := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(word 1,$(1)).odex) \
76         $(eval $(call add-dependency,$(_bdbjdp_target),$(_bdbjdp_dep))) \
77         $(eval $(call _build-dexpreopt-boot-jar-dependency-pair,$(wordlist 2,999,$(1)))))
78 endef
79
80 define _build-dexpreopt-boot-jar-dependency
81 $(call _build-dexpreopt-boot-jar-dependency-pair,$(DEXPREOPT_BOOT_JARS_MODULES))
82 endef
83
84 $(eval $(call _build-dexpreopt-boot-jar-dependency))