# # Copyright (C) 2011 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #
LOCAL_PATH := $(call my-dir)
art_path := $(LOCAL_PATH)
include $(art_path)/build/Android.common_path.mk
######################################################################## # cpplint rules to style check art source files
VIXL_TEST_DEPENDENCY := # We can only run the vixl tests on 64-bit hosts (vixl testing issue) when its a # top-level build (to declare the vixl test rule). ifneq ($(HOST_PREFER_32_BIT),true) ifeq ($(ONE_SHOT_MAKEFILE),)
VIXL_TEST_DEPENDENCY := run-vixl-tests endif endif
# "mm test-art-host" to build and run all host tests.
.PHONY: test-art-host
test-art-host: test-art-host-gtest test-art-host-run-test \
test-art-host-vixl test-art-host-dexdump
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# All host tests that run solely with the default compiler.
.PHONY: test-art-host-default
test-art-host-default: test-art-host-run-test-default
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# All host tests that run solely with the optimizing compiler.
.PHONY: test-art-host-optimizing
test-art-host-optimizing: test-art-host-run-test-optimizing
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# All host tests that run solely on the interpreter.
.PHONY: test-art-host-interpreter
test-art-host-interpreter: test-art-host-run-test-interpreter
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# All host tests that run solely on the jit.
.PHONY: test-art-host-jit
test-art-host-jit: test-art-host-run-test-jit
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# "mm test-art-target" to build and run all target tests.
.PHONY: test-art-target
test-art-target: test-art-target-gtest test-art-target-run-test
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# All target tests that run solely with the default compiler.
.PHONY: test-art-target-default
test-art-target-default: test-art-target-run-test-default
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# All target tests that run solely with the optimizing compiler.
.PHONY: test-art-target-optimizing
test-art-target-optimizing: test-art-target-run-test-optimizing
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# All target tests that run solely on the interpreter.
.PHONY: test-art-target-interpreter
test-art-target-interpreter: test-art-target-run-test-interpreter
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
# All target tests that run solely on the jit.
.PHONY: test-art-target-jit
test-art-target-jit: test-art-target-run-test-jit
$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
####################### # Reset LOCAL_PATH because previous includes may override its value. # Keep this after all "include $(art_path)/..." are done, and before any # "include $(BUILD_...)".
LOCAL_PATH := $(art_path)
######################################################################## # "m build-art" for quick minimal build
.PHONY: build-art
build-art: build-art-host
# For host, we extract the ICU data from the apex and install it to HOST_OUT/I18N_APEX.
$(HOST_I18N_DATA): $(TARGET_OUT)/apex/$(I18N_APEX).apex $(HOST_OUT)/bin/deapexer $(HOST_OUT)/bin/debugfs_static
$(call extract-from-apex,$(I18N_APEX)) rm -rf $(HOST_OUT)/$(I18N_APEX)
mkdir -p $(HOST_OUT)/$(I18N_APEX)/ cp -R $(TARGET_OUT)/apex/$(I18N_APEX)/etc/ $(HOST_OUT)/$(I18N_APEX)/
touch $@
.PHONY: build-art-simulator-profile
build-art-simulator-profile: $(HOST_OUT_EXECUTABLES)/profmand $(TARGET_CORE_IMG_DEX_FILES) \
$(PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION)
mkdir -p $(dir $(TARGET_BOOT_IMAGE_PROFILE)) # Generate a profile from the core boot jars. This allows the simulator and boot image to use a # stable profile that is generated on the host.
$(HOST_OUT_EXECUTABLES)/profmand \
--output-profile-type=boot \
--create-profile-from=$(PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION) \
$(foreach jar,$(TARGET_CORE_IMG_DEX_FILES),--apk=$(jar)) \
$(foreach jar,$(TARGET_CORE_IMG_DEX_LOCATIONS),--dex-location=$(jar)) \
--reference-profile-file=$(TARGET_BOOT_IMAGE_PROFILE)
.PHONY: build-art-simulator-boot-image
build-art-simulator-boot-image: $(HOST_OUT_EXECUTABLES)/generate-boot-image64 \
$(HOST_OUT_EXECUTABLES)/dex2oatd $(TARGET_CORE_IMG_DEX_FILES) build-art-simulator-profile # Note: The target boot image needs to be in a trusted system directory to be used by the # zygote or if -Xonly-use-system-oat-files is passed to the runtime. rm -rf $(TARGET_BOOT_IMAGE_SYSTEM_DIR)
mkdir -p $(TARGET_BOOT_IMAGE_SYSTEM_DIR)/javalib
mkdir -p $(TARGET_ART_APEX_SYSTEM)/javalib # Copy the core boot jars to the expected directory for generate-boot-image.
$(foreach i,$(call int_range_list, 1, $(words $(TARGET_CORE_IMG_JARS))), \ cp $(word $(i),$(TARGET_CORE_IMG_DEX_FILES)) \
$(TARGET_ART_APEX_SYSTEM)/javalib/$(word $(i),$(TARGET_CORE_IMG_JARS)).jar;) # Generate a target boot image using the host dex2oat. Note: a boot image using a profile is # required for certain run tests to pass.
$(HOST_OUT_EXECUTABLES)/generate-boot-image64 \
--output-dir=$(TARGET_BOOT_IMAGE_SYSTEM_DIR)/javalib \
--compiler-filter=speed-profile \
--use-profile=true \
--profile-file=$(TARGET_BOOT_IMAGE_PROFILE) \
--dex2oat-bin=$(HOST_OUT_EXECUTABLES)/dex2oatd \
--android-root=$(TARGET_OUT) \
--android-root-for-location=true \
--core-only=true \
--instruction-set=$(TARGET_ARCH)
# For simulator, build a target profile and boot image on the host.
.PHONY: build-art-simulator
build-art-simulator: build-art-simulator-profile build-art-simulator-boot-image
# Extracts files from an APEX into a location. The APEX can be either a .apex or # .capex file in $(TARGET_OUT)/apex, or a directory in the same location. Files # are extracted to $(TARGET_OUT) with the same relative paths as under the APEX # root. # $(1): APEX base name # $(2): List of files to extract, with paths relative to the APEX root # # "cp -d" below doesn't work on Darwin, but this is only used for tests and # won't run on mac anyway. define extract-from-apex
apex_root=$(TARGET_OUT)/apex && \
apex_file=$$apex_root/$(1).apex && \
apex_dir=$$apex_root/$(1) && \ if [ ! -f $$apex_file ]; then \
apex_file=$$apex_root/$(1).capex; \ fi && \ if [ -f $$apex_file ]; then \ rm -rf $$apex_dir && \
mkdir -p $$apex_dir && \
debugfs=$(HOST_OUT)/bin/debugfs_static && \
fsckerofs=$(HOST_OUT)/bin/fsck.erofs && \
$(HOST_OUT)/bin/deapexer --debugfs_path $$debugfs \
--fsckerofs_path $$fsckerofs extract $$apex_file $$apex_dir; \ fi && \ for f in $(2); do \
sf=$$apex_dir/$$f && \
df=$(TARGET_OUT)/$$f && \ if [ -f $$sf -o -h $$sf ]; then \
mkdir -p $$(dirname $$df) && \ cp -fd $$sf $$df; \ fi || exit 1; \ done endef
######################################################################## # Rules for building all dependencies for tests.
# Clear locally used variables.
TEST_ART_TARGET_SYNC_DEPS :=
# These files only exist if this flag is off. WITH_DEXPREOPT_ART_BOOT_IMG_ONLY is the # minimal dexpreopt mode we use on eng builds for build speed. ifneq ($(WITH_DEXPREOPT_ART_BOOT_IMG_ONLY),true)
# Helper target that depends on boot image creation. # # Can be used, for example, to dump initialization failures: # m art-boot-image ART_BOOT_IMAGE_EXTRA_ARGS=--dump-init-failures=fails.txt
.PHONY: art-boot-image
art-boot-image: $(DEXPREOPT_IMAGE_boot_$(TARGET_ARCH))
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.