Home | History | Annotate | Download | only in build
      1 #
      2 # Copyright (C) 2011 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 
     17 # DEX2OAT defined in build/core/config.mk
     18 DEX2OATD := $(HOST_OUT_EXECUTABLES)/dex2oatd$(HOST_EXECUTABLE_SUFFIX)
     19 
     20 LIBART_COMPILER := $(HOST_OUT_SHARED_LIBRARIES)/libart-compiler$(HOST_SHLIB_SUFFIX)
     21 LIBARTD_COMPILER := $(HOST_OUT_SHARED_LIBRARIES)/libartd-compiler$(HOST_SHLIB_SUFFIX)
     22 
     23 # TODO: for now, override with debug version for better error reporting
     24 DEX2OAT := $(DEX2OATD)
     25 LIBART_COMPILER := $(LIBARTD_COMPILER)
     26 
     27 # By default, do not run rerun dex2oat if the tool changes.
     28 # Comment out the | to force dex2oat to rerun on after all changes.
     29 DEX2OAT_DEPENDENCY := |
     30 DEX2OAT_DEPENDENCY += $(DEX2OAT)
     31 DEX2OAT_DEPENDENCY += $(LIBART_COMPILER)
     32 
     33 OATDUMP := $(HOST_OUT_EXECUTABLES)/oatdump$(HOST_EXECUTABLE_SUFFIX)
     34 OATDUMPD := $(HOST_OUT_EXECUTABLES)/oatdumpd$(HOST_EXECUTABLE_SUFFIX)
     35 # TODO: for now, override with debug version for better error reporting
     36 OATDUMP := $(OATDUMPD)
     37 
     38 PRELOADED_CLASSES := frameworks/base/preloaded-classes
     39 
     40 ########################################################################
     41 # A smaller libcore only oat file
     42 TARGET_CORE_JARS := core-libart conscrypt okhttp core-junit bouncycastle
     43 HOST_CORE_JARS := $(addsuffix -hostdex,$(TARGET_CORE_JARS))
     44 
     45 HOST_CORE_DEX_LOCATIONS   := $(foreach jar,$(HOST_CORE_JARS),  $(HOST_OUT_JAVA_LIBRARIES)/$(jar).jar)
     46 TARGET_CORE_DEX_LOCATIONS := $(foreach jar,$(TARGET_CORE_JARS),/$(DEXPREOPT_BOOT_JAR_DIR)/$(jar).jar)
     47 
     48 HOST_CORE_DEX_FILES   := $(foreach jar,$(HOST_CORE_JARS),  $(call intermediates-dir-for,JAVA_LIBRARIES,$(jar),t,COMMON)/javalib.jar)
     49 TARGET_CORE_DEX_FILES := $(foreach jar,$(TARGET_CORE_JARS),$(call intermediates-dir-for,JAVA_LIBRARIES,$(jar), ,COMMON)/javalib.jar)
     50 
     51 HOST_CORE_OAT := $(HOST_OUT_JAVA_LIBRARIES)/core.oat
     52 TARGET_CORE_OAT := $(ART_TEST_DIR)/core.oat
     53 
     54 HOST_CORE_OAT_OUT := $(HOST_OUT_JAVA_LIBRARIES)/core.oat
     55 TARGET_CORE_OAT_OUT := $(ART_TEST_OUT)/core.oat
     56 
     57 HOST_CORE_IMG_OUT := $(HOST_OUT_JAVA_LIBRARIES)/core.art
     58 TARGET_CORE_IMG_OUT := $(ART_TEST_OUT)/core.art
     59 
     60 $(HOST_CORE_IMG_OUT): $(HOST_CORE_DEX_FILES) $(DEX2OAT_DEPENDENCY)
     61 	@echo "host dex2oat: $@ ($?)"
     62 	@mkdir -p $(dir $@)
     63 	$(hide) $(DEX2OAT) $(PARALLEL_ART_COMPILE_JOBS) --runtime-arg -Xms16m --runtime-arg -Xmx16m --image-classes=$(PRELOADED_CLASSES) $(addprefix --dex-file=,$(HOST_CORE_DEX_FILES)) $(addprefix --dex-location=,$(HOST_CORE_DEX_LOCATIONS)) --oat-file=$(HOST_CORE_OAT_OUT) --oat-location=$(HOST_CORE_OAT) --image=$(HOST_CORE_IMG_OUT) --base=$(IMG_HOST_BASE_ADDRESS) --instruction-set=$(HOST_ARCH) --host --android-root=$(HOST_OUT)
     64 
     65 $(TARGET_CORE_IMG_OUT): $(TARGET_CORE_DEX_FILES) $(DEX2OAT_DEPENDENCY)
     66 	@echo "target dex2oat: $@ ($?)"
     67 	@mkdir -p $(dir $@)
     68 	$(hide) $(DEX2OAT) $(PARALLEL_ART_COMPILE_JOBS) --runtime-arg -Xms16m --runtime-arg -Xmx16m --image-classes=$(PRELOADED_CLASSES) $(addprefix --dex-file=,$(TARGET_CORE_DEX_FILES)) $(addprefix --dex-location=,$(TARGET_CORE_DEX_LOCATIONS)) --oat-file=$(TARGET_CORE_OAT_OUT) --oat-location=$(TARGET_CORE_OAT) --image=$(TARGET_CORE_IMG_OUT) --base=$(IMG_TARGET_BASE_ADDRESS) --instruction-set=$(TARGET_ARCH) --host-prefix=$(PRODUCT_OUT) --android-root=$(PRODUCT_OUT)/system
     69 
     70 $(HOST_CORE_OAT_OUT): $(HOST_CORE_IMG_OUT)
     71 
     72 $(TARGET_CORE_OAT_OUT): $(TARGET_CORE_IMG_OUT)
     73 
     74 ifeq ($(ART_BUILD_HOST),true)
     75 include $(CLEAR_VARS)
     76 LOCAL_MODULE := core.art-host
     77 LOCAL_MODULE_TAGS := optional
     78 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
     79 LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.oat.mk
     80 LOCAL_ADDITIONAL_DEPENDENCIES += $(HOST_CORE_IMG_OUT)
     81 include $(BUILD_PHONY_PACKAGE)
     82 endif
     83 
     84 ########################################################################
     85 # The full system boot classpath
     86 TARGET_BOOT_JARS := $(subst :, ,$(DEXPREOPT_BOOT_JARS))
     87 TARGET_BOOT_JARS := $(foreach jar,$(TARGET_BOOT_JARS),$(patsubst core, core-libart,$(jar)))
     88 TARGET_BOOT_DEX_LOCATIONS := $(foreach jar,$(TARGET_BOOT_JARS),/$(DEXPREOPT_BOOT_JAR_DIR)/$(jar).jar)
     89 TARGET_BOOT_DEX_FILES := $(foreach jar,$(TARGET_BOOT_JARS),$(call intermediates-dir-for,JAVA_LIBRARIES,$(jar),,COMMON)/javalib.jar)
     90 
     91 TARGET_BOOT_IMG_OUT := $(DEFAULT_DEX_PREOPT_IMAGE)
     92 TARGET_BOOT_OAT_OUT := $(patsubst %.art,%.oat,$(TARGET_BOOT_IMG_OUT))
     93 TARGET_BOOT_OAT := $(subst $(PRODUCT_OUT),,$(TARGET_BOOT_OAT_OUT))
     94 TARGET_BOOT_OAT_UNSTRIPPED_OUT := $(TARGET_OUT_UNSTRIPPED)$(TARGET_BOOT_OAT)
     95 
     96 $(TARGET_BOOT_IMG_OUT): $(TARGET_BOOT_DEX_FILES) $(DEX2OAT_DEPENDENCY)
     97 	@echo "target dex2oat: $@ ($?)"
     98 	@mkdir -p $(dir $@)
     99 	@mkdir -p $(dir $(TARGET_BOOT_OAT_UNSTRIPPED_OUT))
    100 	$(hide) $(DEX2OAT) $(PARALLEL_ART_COMPILE_JOBS) --runtime-arg -Xms256m --runtime-arg -Xmx256m --image-classes=$(PRELOADED_CLASSES) $(addprefix --dex-file=,$(TARGET_BOOT_DEX_FILES)) $(addprefix --dex-location=,$(TARGET_BOOT_DEX_LOCATIONS)) --oat-symbols=$(TARGET_BOOT_OAT_UNSTRIPPED_OUT) --oat-file=$(TARGET_BOOT_OAT_OUT) --oat-location=$(TARGET_BOOT_OAT) --image=$(TARGET_BOOT_IMG_OUT) --base=$(IMG_TARGET_BASE_ADDRESS) --instruction-set=$(TARGET_ARCH) --host-prefix=$(PRODUCT_OUT) --android-root=$(PRODUCT_OUT)/system
    101 
    102 $(TARGET_BOOT_OAT_UNSTRIPPED_OUT): $(TARGET_BOOT_IMG_OUT)
    103 
    104 $(TARGET_BOOT_OAT_OUT): $(TARGET_BOOT_OAT_UNSTRIPPED_OUT)
    105 
    106 ifeq ($(ART_BUILD_TARGET_NDEBUG),true)
    107 include $(CLEAR_VARS)
    108 LOCAL_MODULE := boot.art
    109 LOCAL_MODULE_TAGS := optional
    110 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
    111 LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.oat.mk
    112 LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_BOOT_IMG_OUT) $(TARGET_BOOT_OAT_OUT)
    113 include $(BUILD_PHONY_PACKAGE)
    114 endif
    115