210 lines
8.8 KiB
Makefile
210 lines
8.8 KiB
Makefile
# 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)
|
|
|
|
include art/build/Android.common_test.mk
|
|
|
|
# Dependencies for actually running a run-test.
|
|
TEST_ART_RUN_TEST_DEPENDENCIES := \
|
|
$(HOST_OUT_EXECUTABLES)/dx \
|
|
$(HOST_OUT_EXECUTABLES)/jasmin \
|
|
$(HOST_OUT_EXECUTABLES)/smali \
|
|
$(HOST_OUT_EXECUTABLES)/dexmerger \
|
|
$(JACK)
|
|
|
|
# Convert's a rule name to the form used in variables, e.g. no-relocate to NO_RELOCATE
|
|
define name-to-var
|
|
$(shell echo $(1) | tr '[:lower:]' '[:upper:]' | tr '-' '_')
|
|
endef # name-to-var
|
|
|
|
# We need dex2oat and dalvikvm on the target as well as the core images (all images as we sync
|
|
# only once).
|
|
TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUTS)
|
|
|
|
# Also need libartagent.
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagent)
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagentd)
|
|
ifdef TARGET_2ND_ARCH
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagent)
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagentd)
|
|
endif
|
|
|
|
# Also need libtiagent.
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagent)
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagentd)
|
|
ifdef TARGET_2ND_ARCH
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagent)
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagentd)
|
|
endif
|
|
|
|
# Also need libtistress.
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtistress)
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtistressd)
|
|
ifdef TARGET_2ND_ARCH
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtistress)
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtistressd)
|
|
endif
|
|
|
|
# Also need libarttest.
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttest)
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttestd)
|
|
ifdef TARGET_2ND_ARCH
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttest)
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttestd)
|
|
endif
|
|
|
|
# Also need libnativebridgetest.
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libnativebridgetest)
|
|
ifdef TARGET_2ND_ARCH
|
|
TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libnativebridgetest)
|
|
endif
|
|
|
|
# Also need libopenjdkjvmti.
|
|
TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmti
|
|
TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmtid
|
|
|
|
TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/core-libart-testdex.jar
|
|
TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/core-oj-testdex.jar
|
|
TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/okhttp-testdex.jar
|
|
TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/bouncycastle-testdex.jar
|
|
TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/conscrypt-testdex.jar
|
|
|
|
# All tests require the host executables. The tests also depend on the core images, but on
|
|
# specific version depending on the compiler.
|
|
ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
|
|
$(ART_HOST_EXECUTABLES) \
|
|
$(HOST_OUT_EXECUTABLES)/hprof-conv \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagent) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagentd) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistress) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistressd) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagent) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagentd) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttest) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttestd) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetest) \
|
|
$(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
|
|
$(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
|
|
$(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
|
|
$(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \
|
|
$(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \
|
|
|
|
ifneq ($(HOST_PREFER_32_BIT),true)
|
|
ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagent) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagentd) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistress) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistressd) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagent) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagentd) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttest) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttestd) \
|
|
$(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetest) \
|
|
$(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
|
|
$(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
|
|
$(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
|
|
$(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \
|
|
$(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \
|
|
|
|
endif
|
|
|
|
# Host executables.
|
|
host_prereq_rules := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
|
|
|
|
ifeq ($(ANDROID_COMPILE_WITH_JACK),true)
|
|
# Classpath for Jack compilation for host.
|
|
host_prereq_rules += $(HOST_JACK_CLASSPATH_DEPENDENCIES)
|
|
endif
|
|
|
|
# Required for dx, jasmin, smali, dexmerger, jack.
|
|
host_prereq_rules += $(TEST_ART_RUN_TEST_DEPENDENCIES)
|
|
|
|
ifeq ($(ANDROID_COMPILE_WITH_JACK),true)
|
|
# Classpath for Jack compilation for target.
|
|
target_prereq_rules := $(TARGET_JACK_CLASSPATH_DEPENDENCIES)
|
|
endif
|
|
|
|
# Sync test files to the target, depends upon all things that must be pushed
|
|
#to the target.
|
|
target_prereq_rules += test-art-target-sync
|
|
|
|
define core-image-dependencies
|
|
image_suffix := $(3)
|
|
ifeq ($(3),regalloc_gc)
|
|
image_suffix:=optimizing
|
|
else
|
|
ifeq ($(3),jit)
|
|
image_suffix:=interpreter
|
|
endif
|
|
endif
|
|
ifeq ($(2),no-image)
|
|
$(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_$(4))
|
|
else
|
|
ifeq ($(2),picimage)
|
|
$(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_$(4))
|
|
else
|
|
ifeq ($(2),multipicimage)
|
|
$(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_multi_$(4))
|
|
endif
|
|
endif
|
|
endif
|
|
endef
|
|
|
|
TARGET_TYPES := host target
|
|
COMPILER_TYPES := jit interpreter optimizing regalloc_gc jit interp-ac speed-profile
|
|
IMAGE_TYPES := picimage no-image multipicimage
|
|
ALL_ADDRESS_SIZES := 64 32
|
|
|
|
# Add core image dependencies required for given target - HOST or TARGET,
|
|
# IMAGE_TYPE, COMPILER_TYPE and ADDRESS_SIZE to the prereq_rules.
|
|
$(foreach target, $(TARGET_TYPES), \
|
|
$(foreach image, $(IMAGE_TYPES), \
|
|
$(foreach compiler, $(COMPILER_TYPES), \
|
|
$(foreach address_size, $(ALL_ADDRESS_SIZES), $(eval \
|
|
$(call core-image-dependencies,$(target),$(image),$(compiler),$(address_size)))))))
|
|
|
|
test-art-host-run-test-dependencies : $(host_prereq_rules)
|
|
test-art-target-run-test-dependencies : $(target_prereq_rules)
|
|
test-art-run-test-dependencies : test-art-host-run-test-dependencies test-art-target-run-test-dependencies
|
|
|
|
# Create a rule to build and run a test group of the following form:
|
|
# test-art-{1: host target}-run-test
|
|
define define-test-art-host-or-target-run-test-group
|
|
build_target := test-art-$(1)-run-test
|
|
.PHONY: $$(build_target)
|
|
|
|
$$(build_target) : args := --$(1) --verbose
|
|
$$(build_target) : test-art-$(1)-run-test-dependencies
|
|
./art/test/testrunner/testrunner.py $$(args)
|
|
build_target :=
|
|
args :=
|
|
endef # define-test-art-host-or-target-run-test-group
|
|
|
|
$(foreach target, $(TARGET_TYPES), $(eval \
|
|
$(call define-test-art-host-or-target-run-test-group,$(target))))
|
|
|
|
test-art-run-test : test-art-host-run-test test-art-target-run-test
|
|
|
|
host_prereq_rules :=
|
|
target_prereq_rules :=
|
|
core-image-dependencies :=
|
|
name-to-var :=
|
|
define-test-art-host-or-target-run-test-group :=
|
|
TARGET_TYPES :=
|
|
COMPILER_TYPES :=
|
|
IMAGE_TYPES :=
|
|
ALL_ADDRESS_SIZES :=
|
|
LOCAL_PATH :=
|